微信公众平台开发--微信网页受权

在微信公众号开发中实现微信用户自动登录第三方的功能:json

条件:api

  1.公众号必须为微信认证服务号;数组

  2.在公众号接口权限->网页帐号 网页受权获取用户基本信息 修改须要OAuth2.0鉴权的域名;微信


 

关于网页受权的两种scope的区别说明app

  以snsapi_base为scope发起的网页受权,静默受权,不弹出受权页面,只能获取微信用户的openid。微信公众平台

  以snsapi_userinfo为scope发起的网页受权,弹出受权页面,可经过openid拿到昵称、性别、所在地。而且,即便在未关注的状况下,只要用户受权,也能获取其信息网站

  用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。包括其余微信接口,都是须要该用户(即openid)关注了公众号后,才能调用成功的。url

 

关于网页受权access_token和普通access_token的区别           spa

  在用户赞成受权后获取的access_token是针对于用户的,能够说是微信用户给第三方网站的受权码同样。code

  而普通access_token则相似于公众平台给于第三方网站调用接口的凭借。


 

根据官网的步骤:

第一步 获取code:

  须要第三方网站进行重定向到包装后的受权地址 以下

$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".WxPayConfig::APPID."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_userinfo&state=success#wechat_redirect"header("Location:".$url);

appid  为微信公众平台提供的

redirect_ur   是用户赞成受权后进入的页面

scope  为上面所提的两种scope 如果须要微信用户的其余资料须要snsapi_userinfo类型(无论用户是否关注公众号均可以得到资料,能够用来第三方平台的用户资料保留和填充)  若只是但愿获得openid则可使用snsapi_base类型

state  其余携带的参数

第二步 将利用第一步获取的code换取该用户受权的access_token:

$code = $_GET['code']; 
$url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
//经过get发送
$token_data = file_get_contents($token_url);
$token_arr = json_decode($token_data,true);

appid   为微信公众平台提供的APPID

secret  为微信公众平台提供的APPSECRET

code  第一步获取的code

获取到的参数 进行json_decode转化成数组 返回的数据以下

    access_token     网页受权接口调用凭证,注意:此access_token与基础支持的access_token不一样
    expires_in          access_token接口调用凭证超时时间,单位(秒)
    refresh_token    用户刷新access_token
    openid              用户惟一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号惟一的OpenID
    scope               用户受权的做用域,使用逗号(,)分隔

 

第四步:拉取用户信息(需scope为 snsapi_userinfo)

$url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openid."&lang=zh_CN";
$resdata = file_get_contents($url);
$data = json_decode($resdata,true);

此处于第二步作法一致 

    access_token  第二步获取的access_token

    openid 第二步获取的openid

获取到的参数 进行json_decode转化成数组 返回的数据以下

    openid    用户的惟一标识
    nickname    用户昵称
    sex    用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
    province    用户我的资料填写的省份
    city    普通用户我的资料填写的城市
    country    国家,如中国为CN
    headimgurl    用户头像,最后一个数值表明正方形头像大小(有0、4六、6四、9六、132数值可选,0表明640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。
    privilege    用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)
    unionid    只有在用户将公众号绑定到微信开放平台账号后,才会出现该字段。

到此即可以得到了受权的用户的资料了 至于该用户是否已关注该微信公众平台 须要用户管理类接口中的“获取用户基本信息接口” 去得到。

官网还提供了 刷新access_token的接口 和 检查access_token是否有效的接口,其调用方法与第二三步一致。

相关文章
相关标签/搜索