获取unionid

每个用户对每个公众号或小程序的OpenID是唯一的。对于不同公众号或小程序,同一用户的openid不同。如果开发者有在多个公众号,或在公众号、小程序之间统一用户帐号的需求,根据微信公众平台的设计,可以通过UnionID打通公众号和小程序的帐号身份体系,前提是公众号和小程序同时绑定到同一个微信开放平台帐号下。在微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需求。

获取unionid流程:

1. 注册微信开放平台(地址:open.weixin.qq.com)

2. 绑定微信公众号(注:微信开放平台帐号必须完成开发者资质认证才可以绑定

获取unionid_第1张图片

3. (1)公众号获取方式(get方式)

网址:https://mp.weixin.qq.com/cgi-bin/loginpage

调用接口:https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

参数 是否必填 说明
access_token 凭证
openid 普通用户的标识,对当前公众号唯一
lang 国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语

返回的数据:

{
    "subscribe": 1, 
    "openid": "xxxxxxx", 
    "nickname": "Band", 
    "sex": 1, 
    "language": "zh_CN", 
    "city": "xx", 
    "province": "xx", 
    "country": "xx", 
    "headimgurl":"xxxxxx",
    "subscribe_time": 1382694957,
    "unionid": " xxxxx"
    "remark": "",
    "groupid": 0,
    "tagid_list":[128,2],
    "subscribe_scene": "ADD_SCENE_QR_CODE",
    "qr_scene": 98765,
    "qr_scene_str": ""
}

具体参数说明详见 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140839

 

(1)小程序获取方式

20180511微信小程序正式关闭原先getUserInfo的逻辑,不再允许自动弹出授权框。

示例代码:

Page({
 data:{

 },
 onLoad: function (options) {
    wx.getSetting({
      success: function (res) {
        if (res.authSetting['scope.userInfo']) {
          // 已经授权,可以直接调用 getUserInfo 获取头像昵称
          wx.getUserInfo({
            success: function (res) {
              console.log("-------",res)
            }
          })
        }
      }
    })
  }
})

获取到的信息:

{
 encryptedData: "xxxx",
 errMsg:"getUserInfo:ok",
 Iv:"8kXcup7GS76c/0CjMUluzw==",
 rawData:"{略}",
 signature: "xxxxxxx",
 userInfo:{xx}
}

encryptedData是加密数据,详情说明:

https://developers.weixin.qq.com/miniprogram/dev/api/signature.html#wxchecksessionobject,

包含了openid、unionid等。需要进行解密处理,根据不同的编程预言,微信官方提供了示例代码包(在上述链接中)。

解密后即可获得小程序用户的unionid

你可能感兴趣的:(小程序)