这里只涉及微信登录的登录逻辑,不含未登录的情况下,自动注册的逻辑。
在uni-app中,使用微信登录用到的API如下:
uni.login({
provider: 'weixin',
success: info => {
}
})
- 在微信小程序中,使用微信登录,会返回
code
。将code
传给后台,获取openid
完成登录。
{
errMsg: "login:ok",
code: ""
}
// 后台通过code 获取openid
{
'session_key': '',
'openid': '',
'unionid': ''
}
- 在APP中,使用微信登录,会直接返回
openid
等信息。
{
"authResult": {
"access_token": "",
"expires_in": 7200,
"refresh_token": "",
"openid": "",
"scope": "",
"unionid": ""
},
"errMsg": "login:ok"
}
注意点:unionid
只有在你绑定的微信开发平台之后,才会返回。这里就可能留下一个坑:如果是先开发微信小程序平台,积累了一批客户。再去申请开通微信开放平台,关联APP时。会造成APP的用户,和微信小程序之前的用户关联不上。因为这批客户是在开通微信开放平台账号之前注册进去的,只有openid
,没有unionid
。而基于微信的账号机制,是通过unionid
确定两个平台的账号是否为同一个用户的。
解决方案:基本思路是让这批用户在使用APP之前,先用一下小程序,重新获取unionid
,绑定上去。但是实现方式不能太直接,这样会影响用户的操作体验。