微信网页授权获取用户信息等机制

参考官方文档

https://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html

1.用户进入授权界面(APP?WeChat)

  引导用户打开链接:

  https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect图片来源于微信公众平台开发者文档

a-zA-Z0-9:小写字母a至z;大写字母A至Z;数字0至9

state补充说明:开发者自定义的参数,比如一个内部的回调地址。如redirect_uri是一个用户进入内部各种回调地址的入口entry,state包含了这个内部的回调地址。

302重定向:302重定向又称之为302代表暂时性转移(Temporarily Moved ),英文名称:302 redirect。 也被认为是暂时重定向(temporary redirect),一条对网站浏览器的指令来显示浏览器被要求显示的不同的URL,当一个网页经历过短期的URL的变化时使用。



2.用户同意授权后,跳转至redirect_uri/?code=CODE&state=STATE(WeChat?中转)

补充说明:中转获取到code后,可以通过3,4等进行一系列的操作获取用户openid及用户基本信息,处理后再与state中的内部回调地址结合完成app内的跳转等。(中转?APP)



3.通过code换取网页授权access_token及用户openid等(中转?WeChat)

  请求https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

   以获取access_token。

    其中:appid:公众号的唯一标识;secret:公众号的appsecret;code:2中获取的code参数;grant_type=authorization_code默认不变

  若CODE有效(是2中获取的参数)且未过期,appid(是1中的appid)和secret一致,返回JSON数据:

{
   "access_token":"ACCESS_TOKEN",//网页授权接口调用凭证
   "expires_in":7200,//access_token接口调用凭证超时时间,单位(秒)
   "refresh_token":"REFRESH_TOKEN",//用户刷新access_token
   "openid":"OPENID",//用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID
   "scope":"SCOPE",//用户授权的作用域,使用逗号(,)分隔
   "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"//只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段
}

  这里通过code换取的是一个特殊的网页授权access_token,与基础支持中的access_token(该access_token用于调用其他接口)不同。如果网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。

 (3.1)刷新access_token(如果需要)

  由于access_token拥有较短的有效期,当access_token超时后,可以使用refresh_token进行刷新,refresh_token拥有较长的有效期(7天、30天、60天、90天),当refresh_token失效的后,需要用户重新授权。

  请求https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN

  appid:公众号的唯一标识;grant_type=refresh_token不变;refresh_token:3中获取到的refresh_token。

  返回JSON数据:

{
   "access_token":"ACCESS_TOKEN",//网页授权接口调用凭证
   "expires_in":7200,//access_token接口调用凭证超时时间,单位(秒)
   "refresh_token":"REFRESH_TOKEN",//用户刷新access_token
   "openid":"OPENID",//用户唯一标识
   "scope":"SCOPE"//用户授权的作用域,使用逗号(,)分隔
}


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

请求方法:http:GET(请使用https协议)

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN参数:access_token:3中的获取的网页授权接口调用凭证;openid:3中获取的用户openid;lang:返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语。

返回JSON:

{
   "openid":" OPENID",//用户的唯一标识
   " nickname": NICKNAME,//用户昵称
   "sex":"1",//用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
   "province":"PROVINCE",//用户个人资料填写的省份
   "city":"CITY",//普通用户个人资料填写的城市
   "country":"COUNTRY",//国家,如中国为CN
    //用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。
    "headimgurl":   "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",
    "privilege":[
    "PRIVILEGE1"
    "PRIVILEGE2"
    ],//用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)
    "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"//只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段
}

附:用户特权信息:目前已知有微信沃卡用户:群组特权、表情特权、支付特权、流量特权和游戏特权(https://zhidao.baidu.com/question/583338933.html

时间: 2024-08-07 08:36:25

微信网页授权获取用户信息等机制的相关文章

微信网页授权-获取用户信息

第一步:修改网页授权安全域名,什么叫安全域名?安全域名就是说只有这个域名的网页才可以安全的进行网页授权以及获取用户信息. 第二步:下载下这个 MP_verify_Sb2ASLINFP09cMn6.txt(点击下载)放到你的服务器根目录下,可以通过你上面配置的域名直接访问的到,即:http://www.zheyue.me/MP_verify_Sb2ASLINFP09cMn6.txt  可以访问的到.点击确认完成. 第三步: 对自己做的网页地址进行包装,引导客户点击新包装的地址即可.例: https

php微信网页授权获取用户信息

配置回调域名: 1. 引导用户进入授权页面同意授权,获取code 2. 通过code换取网页授权access_token(与基础支持中的access_token不同) 3. 如果需要,开发者可以刷新网页授权access_token,避免过期 4. 通过网页授权access_token和openid获取用户基本信息 先自己建立两个文件: index.php  和  getUser.php 代码实例 index.php如下: 1 <?php 2 $appid = "公众号的appid"

微信网页授权获取用户信息

1 class class_weixin 2 { 3 var $appid = APPID; 4 var $appsecret = APPSECRET; 5 6 //构造函数,获取Access Token 7 public function __construct($appid = NULL, $appsecret = NULL) 8 { 9 if($appid && $appsecret){ 10 $this->appid = $appid; 11 $this->appsec

微信OAuth2网页授权获取用户信息

文档:http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html !!! 微信跟用户没有关系类接口采用了OAUTH2 [客户端模式(Client Credentials Grant)],而跟用户有关系的接口,采用OAuth2.0服务端[授权码模式(Authorization Code)]来获得用户的openid:另外需要注意的一点就是需要在开发者中心页配置授权回调域名,域名必须与设置的域名在同一个域下. 网页授权ac

微信网页授权获取用户基本信息--PHP

现在就说说怎么通过网页授权获取用户基本信息(国家,省,市,昵称)等. 必要条件: 1)公众号认证 2)有网页授权获取用户基本信息的权限接口 注意:最近有朋友说:在公众平台申请的测试号,会出现无法取到用户信息.换到认证的公众账号就正常了! 如果您也遇到这个问题,可以试试在认证的公众账号里测试一下! 感谢大家的支持! 填写授权回调页面的域名 登录公众平台-->开发者中心-->接口权限表 找到 网页授权获取用户基本信息  然后修改-->填写你的域名.如下: 保存即可! ------------

微信网页授权获取用户基本信息

微信公众号可以通过微信网页授权机制,来获取用户基本信息,可以用于微信登录功能 关于网页授权的两种scope的区别说明 1.静默授权:以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的.用户感知的就是直接进入了回调页(往往是业务页面) 2.显示授权:以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的.但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的

微信开发之网页授权获取用户基本信息

微信官方文档:网页授权获取用户基本信息 具体而言,网页授权流程分为四步:1.引导用户进入授权页面同意授权,获取codehttps://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php&response_type=code&scope=snsapi_userinfo

微信开发 网页授权获取用户基本信息

微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使用这个的时候失败了或者无法理解其内容,希望我出个教程详细讲解一下,于是便有了这篇文章. 一.什么是OAuth2.0 官方网站:http://oauth.net/   http://oauth.net/2/ 权威定义:OAuth is An open protocol to allow secure authorization in a simple and standard method

微信公众号开发系列-网页授权获取用户基本信息

OAuth2.0网页授权这个也是在做微信公众平台用到最多的,可以利用授权接口对自己平台内用户进行绑定,实现用户扫描码和微信分享.微信签到.微信商城购物等: 1.高级接口OAuth2.0网页授权设置 a.进入高级接口列表-OAuth2.0-点击修改设置授权域名,域名可以上一级域名和二级域名 b.填写要设置授权域名,我这里用的的是二级域名 体授权Url规则见下面详细描述,主要摘自微信公众平台开发文档,点击进入 2.网页授权获取用户基本信息说明 如果用户在微信中(Web微信除外)访问公众号的第三方网页