WeChat Webライセンスsnsapi_base,snsapi_userinfoの区別と実現


記事はlonglongcheng>>に移動します.
微信開発文書は4部あります.
1第一歩:ユーザーが許可に同意し、codeを取得する
2ステップ2:codeによるWebライセンスaccessの交換token、openid
3ステップ3:access_をリフレッシュするtoken(必要に応じて)
4ステップ4:ユーザー情報を引き出す(scopeがsnsapi_userinfoである必要がある)
snsapi_base:第2ステップで終了し、openidを取得します.その他の操作はこれに基づいています(例えば、ユーザーのアクセス回数情報を記録します).
snsapi_userinfo:openidとユーザー資料(ニックネーム、アイコン、国、省、都市、性別、権限)を取得する
snsapi_base:
public function getBaseInfo(){
    //1、  code
    $appid = 'wxe3ccbacbfdxxxxx';
    $redirect_url = urlencode('http://wx.xx.com/index.php/Weixin/Index/getUserOpenId');
    $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$redirect_url."&response_type=code&scope=snsapi_base&state=123#wechat_redirect";
    header('location:'.$url);
}

//    openid
public function getUserOpenId(){
    //2、       access_token
    $appid = 'wxe3ccbacbfdxxxxx';
    $appsecret = '989b45dd6d2441ed01a5f5933aaaaaaa';
    $code = $_GET['code']; //     getBaseInfo    
    $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code ";
    //3、  openid
    $res = $this->http_curl($url);
    var_dump($res); //     openid  
}

userinfo:
//1、  code

public function getUserDetail(){
    $appid = 'wxe3ccbacbfdxxxxxx';
    $redirect_url = urlencode('http://wx.xx.com/index.php/Weixin/Index/getUserinfo');
    $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$redirect_url."&response_type=code&scope=snsapi_userinfo&state=333#wechat_redirect";
    header('location:'.$url);
}

public function getUserinfo(){
    //2、       access_token
    $appid = 'wxe3ccbacbfdxxxxxx';
    $appsecret = '989b45dd6d2441ed01a5f59336aaaaaa';
    $code = $_GET['code']; //     getBaseInfo    
    $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code ";
    //3、      
    $res = $this->http_curl($url);
    $openid = $res['openid'];
    $access_token = $res['access_token'];
    $url2 = "https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openid."&lang=zh_CN";
    $res2 = $this->http_curl($url2);
    var_dump($res2); 
}

注意:
1、code-xxを取得する.comドメイン名は登録するので、開発-権限インタフェース-ホームページの中で配置します
2、注意codeを取得する関数(getBaseInfo)の中のリンクは、ユーザopenidと情報関数(getUserOpenId)の取得後の対応する機能論理を取得することを指すが、コードアクセスはcode関数(getBaseInfo)を取得すればよい