Home

Written by Mary Ma, and build some interesting tools .

小程序:获取用户UnionID

2019-10-16

公众平台: 服务号/订阅号/小程序 开放平台: 移动应用/网站应用/公众帐号开发/第三方平台开发

  • OpenID = 用户微信号 & 公众平台 APPID (两个数据加密得到的字符串)
  • UnionID = 用户微信号 & 开放平台 APPID(两个数据加密得到的字符串)
  • 同一用户,对同一个微信开放平台帐号下的不同应用,UnionID 是相同的。

1.获取登录凭证(code)

wx.login({
  success(res) {
    // res = {code}
  }
});

res.code: 用户登录凭证(有效期五分钟)。开发者需要在开发者服务器后台调用 auth.code2Session,使用 code 换取 openid 和 session_key 等信息

2. 授权

<button open-type="getUserInfo" bindgetuserinfo="getUserInfoHandler">
  <button />
</button>
getUserInfoHandler(e){
	// 用户拒绝授权
	//e.detail.errMsg = "getUserInfo:fail auth deny"
	// 同意授权
	{
		UserInfo: {
			nickName,
			avatarUrl,
			gender, // [0, 1, 2]
			country,
			province,
			city,
			language // [en, zh_CN, zh_TW]
		},
		rawData, // 不包括敏感信息的原始数据字符串,用于计算签名
		signature,
		encryptedData, // 包括敏感数据在内的完整用户信息的加密数据
		iv, //加密算法的初始向量
		cloudID, //敏感数据对应的云 ID,开通云开发的小程序才会返回
	}
}

3. 服务端解密 unionId

( code, encryptedData, iv) || code => session_key || ||
服务端解密 ||

{
  "openId": "OPENID",
  "nickName": "NICKNAME",
  "gender": GENDER,
  "city": "CITY",
  "province": "PROVINCE",
  "country": "COUNTRY",
  "avatarUrl": "AVATARURL",
  "unionId": "UNIONID",
  "watermark": {
    "appid": "APPID",
    "timestamp": TIMESTAMP
  }
}

Home

Written by Mary Ma, and build some interesting tools .