美文网首页
微信小程序UnionID 和授权机制

微信小程序UnionID 和授权机制

作者: _既白_ | 来源:发表于2018-11-02 17:28 被阅读102次

UnionID 机制

如果开发者拥有多个移动应用,网站应用,公众号和小程序,可以通过UnionID来区分用户的唯一性,因为只要是同一个微信开发平台账号下的移动应用,网站应用,公众号和小程序,用户的UnionID是唯一的。换句话说,同一个用户,对同一个微信开发平台的不同应用,UnionID是唯一的。

UnionID获取途径

  • 调用接口getUserInfo,从解密数据中获取UnionID。本接口需要用户授权。
  • 如果开发者账号下存在同主体的公共号,并且该用户已经关注该公众号。开发者可以直接通过wx.longin + code2session获取该用户UnionID,无需用户再次授权。
  • 如果开发者账号下存在同主体的公共号或移动应用,并且该用户已经授权登陆过该公共号或者移动应用。开发者可以直接通过wx.login +code2Session获取用户的UnionID,无需再次授权。
  • 小程序端调用云函数时,当满足 UnionID 获取条件时可在云函数中通过 cloud.getWXContext 获取 UnionID.

小程序授权

  • 用户点击授权按钮弹出授权提示框,如果用户允许授权,通过bindGetUserInfo 方法获取用户信息.
```js
bindGetUserInfo(e) {
 let userInfo=e.mp.detail.userInfo;

}

```

获取完用户信息后通过wx.login获取用户的code 临时登陆授权码,传给后台服务器调用code2session 获取用户的openid(用户的唯一表识,保存本地)。然后将openid 和用户信息录入用户表,回调之后前端拿到录入用户的生成的userId,保存到本地。保存到本地的openid和userId会在用户卸载小程序后失效。如果失效,用户需要重新授权。

微信公众号

获取用户基本信息(包括UnionID机制)

开发者可通过OpenID来获取用户基本信息。请使用https协议。

http请求方式: GET
https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

参数:

access_token: 调用接口凭证
openid: 普通用户的表识,对应当前公共号唯一

{
    "subscribe": 1, 
    "openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M", 
    "nickname": "Band", 
    "sex": 1, 
    "language": "zh_CN", 
    "city": "广州", 
    "province": "广东", 
    "country": "中国", 
    "headimgurl":"http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
    "subscribe_time": 1382694957,
    "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
    "remark": "",
    "groupid": 0,
    "tagid_list":[128,2],
    "subscribe_scene": "ADD_SCENE_QR_CODE",
    "qr_scene": 98765,
    "qr_scene_str": ""
}
subscribe:用户是否订阅该公众号标识,值为0时,代表此用户没有关注该公众号,拉取不到其余信息。
unionid:只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。
qr_scene:二维码扫码场景(开发者自定义)

获取access_token

公众号和小程序均可以使用AppIDAppSecret调用接口来获取access_tokenAppIDAppSecret可在“微信公众平台-开发-基本配置”页中获得(需要已经成为开发者,且帐号没有异常状态)。调用接口时,请登录“微信公众平台-开发-基本配置”提前将服务器IP地址添加到IP白名单中,点击查看设置方法,否则将无法调用成功。小程序无需配置IP白名单。

https请求方式: GET
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

appid:第三方用户唯一凭证
secret:第三方用户唯一凭证密钥,即appsecret
grant_type:获取access_token填写client_credential

{"access_token":"ACCESS_TOKEN","expires_in":7200}

access_token:获取到的凭证
expires_in:凭证有效时间,单位:秒

相关文章

网友评论

      本文标题:微信小程序UnionID 和授权机制

      本文链接:https://www.haomeiwen.com/subject/kuvcxqtx.html