找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1812|回复: 0
打印 上一主题 下一主题

PHP实现微信网页授权开发教程

[复制链接]

2617

主题

2617

帖子

7789

积分

论坛元老

Rank: 8Rank: 8

积分
7789
跳转到指定楼层
楼主
发表于 2018-2-14 05:39:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            微信网页授权是服务号才有的高级功能,开发者可以通过授权后获取用户的基本信息;在此之前,想要获取消息信息只能在用户和公众号交互时根据openid获取用户信息;而微信网页授权可在不需要消息交互,也不需要关注的情况下获取用户的基本信息。

微信网页授权时通过OAuth2.0完成的,整个过程分为三步:

  
  • 用户授权,获取code;
      
  • 根据code获取access_token【可通过refresh_token刷新获取较长有效期】
      
  • 通过access_token和openid获取用户信息
      


    对微信网页授权过程做了简单封装:
    app_id}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_userinfo&state={$state}#wechat_redirect";
      }
      
      /**
       * 获取授权token
       *
       * @param string $code 通过get_authorize_url获取到的code
       */
      public function get_access_token($app_id = '', $app_secret = '', $code = '')
      {
        $token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$this->app_id}&secret={$this->app_secret}&code={$code}&grant_type=authorization_code";
        $token_data = $this->http($token_url);
       
        if($token_data[0] == 200)
        {
          return json_decode($token_data[1], TRUE);
        }
       
        return FALSE;
      }
      
      /**
       * 获取授权后的微信用户信息
       *
       * @param string $access_token
       * @param string $open_id
       */
      public function get_user_info($access_token = '', $open_id = '')
      {
        if($access_token && $open_id)
        {
          $info_url = "https://api.weixin.qq.com/sns/userinfo?access_token={$access_token}&openid={$open_id}&lang=zh_CN";
          $info_data = $this->http($info_url);
          
          if($info_data[0] == 200)
          {
            return json_decode($info_data[1], TRUE);
          }
        }
       
        return FALSE;
      }
      
      public function http($url, $method, $postfields = null, $headers = array(), $debug = false)
      {
        $ci = curl_init();
        /* Curl settings */
        curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
        curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30);
        curl_setopt($ci, CURLOPT_TIMEOUT, 30);
        curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);

        switch ($method) {
          case 'POST':
            curl_setopt($ci, CURLOPT_POST, true);
            if (!empty($postfields)) {
              curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
              $this->postdata = $postfields;
            }
            break;
        }
        curl_setopt($ci, CURLOPT_URL, $url);
        curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ci, CURLINFO_HEADER_OUT, true);

        $response = curl_exec($ci);
        $http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);

        if ($debug) {
          echo "=====post data======\r\n";
          var_dump($postfields);

          echo '=====info=====' . "\r\n";
          print_r(curl_getinfo($ci));

          echo '=====$response=====' . "\r\n";
          print_r($response);
        }
        curl_close($ci);
        return array($http_code, $response);
      }

    }
    以上就是本文的全部内容,希望对大家的学习有所帮助。
                
                
    您可能感兴趣的文章:
  • 微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
  • 微信开放平台之网站授权微信登录功能
  • weiphp微信公众平台授权设置
  • 微信开发之网页授权获取用户信息(二)
  • ASP.NET实现QQ、微信、新浪微博OAuth2.0授权登录
  • 微信网页授权(OAuth2.0) PHP 源码简单实现
  • MVC微信网页授权获取用户OpenId
  • php版微信公众平台之微信网页登陆授权示例
  • 微信公众号-获取用户信息(网页授权获取)实现步骤
  • 微信开发 微信授权详解
  • 解析微信JS-SDK配置授权,实现分享接口
  • 解决微信授权回调页面域名只能设置一个的问题
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端