微信开发之微信网页授权

一、通过网页授权,可以获取微信用户的基本信息,用来实现自动登录等功能。

二、总共有5个步骤

1.用户同意授权,获取code

2.通过code获取网页授权access_token

3.刷新access_token(如有需要)

4.拉取用户信息(需scope为snsapi_userinfo)

5.(附)检测授权凭证(access_token)是否有效

三、如何实现

1、用户同意授权,获取code

      * @explain 
     * 获取code,用于获取openid和access_token 
     * @remark 
     * code只能使用一次,当获取到之后code失效,再次获取需要重新进入 
     * 不会弹出授权页面,适用于关注公众号后自定义菜单跳转等,如果不关注,那么只能获取openid 
     **/  
    public function getCode()  
    {  
        if (isset($_GET["code"])) {  
            return $_GET["code"];  
        } else {  
            $str = "location: https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . $this->appid . "&redirect_uri=" . $this->index_url . "&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";  
            header($str);  
            exit;  
        }  
    }  

当然在上述步骤中,可以将scope的参数换成snsapi_base即为静默授权,不需要用户点击授权按钮,但只会获取用户的openid。

2、通过code获取网页授权access_token

/** 
     * @explain 
     * 用于获取access_token,返回的$access_token_array中也包含有用户的openid信息。 
 
     **/  
    public function getOpenId()  
    {  
        $access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . $this->appid . "&secret=" . $this->appsecret . "&code=" . $this->code . "&grant_type=authorization_code";  
        $access_token_json = $this->https_request($access_token_url);  
        $access_token_array = json_decode($access_token_json, TRUE);  
        return $access_token_array;  
    } 

3、刷新access_token(如果需要)

4、拉取用户信息(需要scope参数为snsapi_userinfo)

/** 
     * @explain 
     * 获取到用户的openid之后可以判断用户是否有数据,可以直接跳过获取access_token,也可以继续获取access_token 
     **/  
    public function getUserInfo()  
    {  
          
        $userinfo_url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$this->access_token['access_token'] ."&openid=" . $this->access_token['openid']."&lang=zh_CN";  
        $userinfo_json = $this->https_request($userinfo_url);  
        $userinfo_array = json_decode($userinfo_json, TRUE);  
        return $userinfo_array;  
    }  

通过以上步骤即可获得用户授权后的基本信息,拿到数据后再去访问指定的方法,来判断用户的登陆等操作。

2017-11-08

0 个评论