簡(jiǎn)單說(shuō):(直接擼步驟...)
1.用戶需要調(diào)用wx.login()方法撩银,來(lái)拿到用戶登錄憑證code。
wx.login({? ?
? ? ? ? ? ? success:function(res){
? ? ? ? ? ? ? ? ? ? ? ? ? console.log('loginCode:', res.code)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? });
2.將code傳給后臺(tái)率挣,后臺(tái)通過(guò)登錄憑證 code獲取 session_key 和 openid,獲取方法如下:
用你的小程序的appid懈贺,secret钞它,code來(lái)請(qǐng)求下面的api(請(qǐng)?jiān)诤笈_(tái)處理)
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
在確保code沒(méi)有失效的情況下募谎,后臺(tái)會(huì)獲的用戶的openid和session_key
3.用戶通過(guò)getPhoneNumber組件扶关,引導(dǎo)用戶確認(rèn)授權(quán)。拿到encryptedData和iv数冬。
4.將encryptedData和iv傳給后臺(tái)节槐,后臺(tái)通過(guò)解密算法(https://mp.weixin.qq.com/debug/wxadoc/dev/api/signature.html)將用戶的手機(jī)號(hào)解析出來(lái)。
這個(gè)時(shí)候后臺(tái)把接口解析的手機(jī)號(hào)返回給你拐纱,就拿到了~
對(duì)稱(chēng)解密使用的算法為 AES-128-CBC铜异,數(shù)據(jù)采用PKCS#7填充。
對(duì)稱(chēng)解密的目標(biāo)密文為 Base64_Decode(encryptedData)秸架。
對(duì)稱(chēng)解密秘鑰 aeskey = Base64_Decode(session_key), aeskey 是16字節(jié)揍庄。
對(duì)稱(chēng)解密算法初始向量 為Base64_Decode(iv),其中iv由數(shù)據(jù)接口返回东抹。
(附官網(wǎng)登錄時(shí)序圖如下)