本文已参与「新人创作礼」活动,一起开启掘金创作之路。 UnionID机制说明 如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过UnionID来区分用户的唯一性 因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的UnionID是唯一的。 换句话说,同一用户,对同一个微信开放平台下的不同应用,UnionID是相同的。
UnionID获取 1、通过wx.login等接口 (1)调用wx.login()获取临时登录凭证code,并回传到开发者服务器。 (2)调用auth.code2Session接口,换取用户唯一标识OpenID、用户在微信开放平台帐号下的唯一标识UnionID(若当前小程序已绑定到微信开放平台帐号)和会话密钥session_key 即改接口:GET api.weixin.qq.com/sns/jscode2…
2、云函数
小程序端调用云函数时,可在云函数中通过Cloud.getWXContext获取UnionID
3、通过支付接口
用户在小程序(暂不支持小游戏)中支付完成后,开发者可以直接通过getPaidUnionId接口获取该用户的UnionID
注意:本接口仅在用户支付完成后的5分钟内有效,请开发者妥善处理。
UnionID典型使用场景及案例 (1)使用记录同步: 用户在多端的浏览记录、购买历史、收藏夹等信息可便捷同步,并提供个性化服务。
(2)用户信息维护:
如会员卡积分、收货地址等信息,用户无需重新输入信息,降低使用成本,提升转化率。
如某服饰行业小程序,提供手机号一键快捷登录方式,可自动拉取用户在微信中的默认手机号码,避免再次填写。
UnionID使用建议 (1)在必须用到登录信息的环节引导用户登录 在用户必须登录时才引导用户登录(如:购买前需要获取会员信息,用于同步积分数据),而不是用户一进入小程序就弹窗要求用户授权。 如只需要在前端展示用户头像、昵称,无需要求用户授权,可直接展示。
(2)清晰、准确地引导用户登录
在登录页面中,清晰、准确地告知用户当前操作是登录,说明获取登录信息的目的(如:用于同步会员积分数据等)。
(3)不强制用户必须登录后才能使用小程序服务
提供游客模式,不强制用户必须登录后才能进入小程序。如要求必须授权头像昵称等信息才能继续使用小程序,会导致某些用户放弃使用该小程序。
好了理论说的不少,具体实现看代码: 1.小程序获取code
success(res){
var code = res.code;
wx.request({
url: 'https://********',//你的接口
data: {
code: code
},
method: 'POST',
header: {
'content-type': 'application/json' // 默认值
},
success(res) {
//res返回你需要unionid
}
})
}
}
});
},
2.php后台代码实现
protected $appid = "********";//小程序appid
protected $secret = "*********";//小程序秘钥
protected $url = "https://api.weixin.qq.com/sns/jscode2session";
/*
* 获取unionid
*/
public function getUserUnionid($code =''){
$url_token = "";
$url_token = $url_token . $this->url;
$url_token = $url_token . "?appid=".$this->appid."&secret=".$this->secret;
$url_token = $url_token . "&js_code=".$code;
$url_token = $url_token . "&grant_type=authorization_code";
$return_token = "";
$return_token = file_get_contents($url_token);
$data = json_decode($return_token);
return $data;
}
//随便写个调用方法,你们根据自己的需要调用就行
public function test(){
$code = input('code');//小程序传过来的
$data = $this->getUserUnionid($code);
$unionid = $data->unionid;//获取到了
}
是不是很简单,老七写东西都是这么简单,如果有需要的朋友或者不明白,可以随时留言问老七!