這里只涉及微信登錄的登錄邏輯忍疾,不含未登錄的情況下,自動(dòng)注冊(cè)的邏輯谨朝。
在uni-app中膝昆,使用微信登錄用到的API如下:
uni.login({
provider: 'weixin',
success: info => {
}
})
- 在微信小程序中丸边,使用微信登錄叠必,會(huì)返回
code
荚孵。將code
傳給后臺(tái),獲取openid
完成登錄纬朝。
{
errMsg: "login:ok",
code: ""
}
// 后臺(tái)通過code 獲取openid
{
'session_key': '',
'openid': '',
'unionid': ''
}
- 在APP中收叶,使用微信登錄,會(huì)直接返回
openid
等信息共苛。
{
"authResult": {
"access_token": "",
"expires_in": 7200,
"refresh_token": "",
"openid": "",
"scope": "",
"unionid": ""
},
"errMsg": "login:ok"
}
注意點(diǎn):unionid
只有在你綁定的微信開發(fā)平臺(tái)之后判没,才會(huì)返回。這里就可能留下一個(gè)坑:如果是先開發(fā)微信小程序平臺(tái)隅茎,積累了一批客戶澄峰。再去申請(qǐng)開通微信開放平臺(tái),關(guān)聯(lián)APP時(shí)辟犀。會(huì)造成APP的用戶俏竞,和微信小程序之前的用戶關(guān)聯(lián)不上。因?yàn)檫@批客戶是在開通微信開放平臺(tái)賬號(hào)之前注冊(cè)進(jìn)去的堂竟,只有openid
魂毁,沒有unionid
。而基于微信的賬號(hào)機(jī)制出嘹,是通過unionid
確定兩個(gè)平臺(tái)的賬號(hào)是否為同一個(gè)用戶的席楚。
解決方案:基本思路是讓這批用戶在使用APP之前,先用一下小程序税稼,重新獲取unionid
烦秩,綁定上去。但是實(shí)現(xiàn)方式不能太直接郎仆,這樣會(huì)影響用戶的操作體驗(yàn)只祠。