小程序獲取手機(jī)號(hào)失敗是什么原因(小程序獲取手機(jī)號(hào)沒反應(yīng))
本篇文章給大家談?wù)勑〕绦颢@取手機(jī)號(hào)失敗是什么原因,以及小程序獲取手機(jī)號(hào)沒反應(yīng)對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。
本文目錄一覽:
- 1、靈動(dòng)長春登錄顯示獲取手機(jī)號(hào)碼失敗
- 2、圳幫扶小程序登錄微信時(shí)總顯示無此手機(jī)號(hào)
- 3、微信小程序(抖音小程序):手機(jī)號(hào)碼解析失敗解決方案
靈動(dòng)長春登錄顯示獲取手機(jī)號(hào)碼失敗
不是實(shí)名手機(jī)號(hào)。靈動(dòng)長春登錄時(shí),顯示獲取手機(jī)號(hào)碼失敗,表示的是使用的不是實(shí)名手機(jī)號(hào),所以無法進(jìn)行獲取。靈動(dòng)長春微信小程序是由長春市政務(wù)服務(wù)和數(shù)字化建設(shè)管理局打造的城市智能體社會(huì)側(cè)服務(wù)移動(dòng)端入口,面向長春市民提供公共服務(wù)、社區(qū)服務(wù)的智能程序。
圳幫扶小程序登錄微信時(shí)總顯示無此手機(jī)號(hào)
圳幫扶小程序登錄微信時(shí)總顯示無此手機(jī)號(hào)原因是小程序不穩(wěn)定導(dǎo)致。
1、在微信小程序首頁,點(diǎn)擊右下角我的選項(xiàng)。
2、進(jìn)入后點(diǎn)擊一下左上角的登錄選項(xiàng)。
3、在頁面點(diǎn)擊一下微信賬號(hào)快捷登錄選項(xiàng)。
4、在界面進(jìn)行獲取手機(jī)號(hào)并點(diǎn)擊允許即可。
微信小程序(抖音小程序):手機(jī)號(hào)碼解析失敗解決方案
本文以抖音小程序(微信小程序獲取流程和接口一模一樣)為例,最近博主在做一個(gè)抖音小程序的小項(xiàng)目,前端在獲取用戶手機(jī)號(hào)的時(shí)候,需要調(diào)用 tt.login 接口進(jìn)行登錄,登錄后返回一個(gè)code,這個(gè)code有3分鐘的失效時(shí)間,根據(jù)這個(gè)code可以獲取到sessionKey,這個(gè)sessionKey類似于對(duì)稱加密的密鑰,會(huì)對(duì)用戶信息進(jìn)行加密。在獲取用戶信息的時(shí)候,前端
需要將 button 組件 open-type 的值設(shè)置為 getPhoneNumber。用戶點(diǎn)擊后會(huì)彈出一個(gè)授權(quán)彈窗讓用戶確認(rèn)(若該用戶賬戶未綁定手機(jī)號(hào)碼會(huì)執(zhí)行一次綁定手機(jī)號(hào)碼的流程;授權(quán)彈窗每次使用都會(huì)彈出)。 用戶同意后,開發(fā)者可以通過 bindgetphonenumber 事件回調(diào)獲取到一個(gè)加密數(shù)據(jù),開發(fā)者可以把該數(shù)據(jù)傳回到自己的服務(wù)端進(jìn)行解密獲取手機(jī)號(hào)。
獲取到的加密數(shù)據(jù)需要使用sessionKey進(jìn)行解密,因此在獲取用戶信息前,需要登錄一次,獲取到code,然后根據(jù)code獲取到sessionKey,再根據(jù)sessionKey進(jìn)行加密數(shù)據(jù)的解密,解析出手機(jī)號(hào)。
根據(jù)博主猜測(cè),抖音在登錄后會(huì)生成一個(gè)code,和一個(gè)對(duì)應(yīng)的sessionKey,在會(huì)話期間(session未過期)的時(shí)候獲取用戶信息,會(huì)將用戶信息使用sessionKey進(jìn)行數(shù)據(jù)的加密,進(jìn)行數(shù)據(jù)的解密也需要使用到sessionKey。code和sessionKey是對(duì)應(yīng)的,但是它們的失效期是不一樣的,code的失效期是3分鐘,sessionKey的失效時(shí)間是不定的,只要用戶活躍在頁面上都不會(huì)失效。在獲取到code的3分鐘內(nèi)調(diào)用 code-2-session 接口,會(huì)獲取到sessionKey,如果3分鐘后根據(jù)code獲取sessionKey將會(huì)獲取失敗,因此解密也會(huì)失敗。
因?yàn)闊o法判斷用戶什么時(shí)候開始獲取用戶信息,所以用戶一進(jìn)入頁面,前端就會(huì)調(diào)用 tt.login 接口進(jìn)行登錄,然后放到localstorage緩存中,在用戶點(diǎn)擊按鈕時(shí),彈出授權(quán)框用戶確認(rèn)后獲取到用戶信息的加密數(shù)據(jù),然后前端將緩存的code和加密數(shù)據(jù)一并傳給后端。后端用code先去調(diào)用 code-2-session 接口獲取到sessionKey,然后以sessionKey為密鑰進(jìn)行AES解密,獲取到手機(jī)號(hào)返回給前臺(tái)。整個(gè)流程看起來沒什么問題,但是一旦用戶在頁面停留時(shí)間超過3分鐘,然后再去獲取用戶信息會(huì)失敗,主要是因?yàn)閏ode已經(jīng)失效,獲取sessionKey會(huì)失敗。
目前的問題就是過了code的有效期后,根據(jù)code獲取sessionKey失敗。那么在前端login獲取到code后,先緩存到本地,然后立即調(diào)用后臺(tái)接口去獲取sessionKey然后緩存到redis里面,key為code,value為sessionKey。失效時(shí)間根據(jù)自己的業(yè)務(wù)設(shè)置(小程序頁面用戶不會(huì)停留太久,因此緩存失效時(shí)間設(shè)置為30分鐘),用戶退出小程序后,會(huì)重新login,然后也會(huì)存一份新的code和sessionKey的對(duì)應(yīng)值。
用戶在授權(quán)到用戶信息后,前端直接將緩存的code和加密后的用戶信息上傳到服務(wù)到進(jìn)行解密。服務(wù)端根據(jù)code從緩存中先獲取到sessionKey,然后再用sessionKey進(jìn)行解密,解析出手機(jī)號(hào)進(jìn)行返回。
以上解決辦法每次基本都可以獲取手機(jī)號(hào)成功,但是也會(huì)存在一些問題
UserInfoController主要提供兩個(gè)接口,一個(gè)是解密手機(jī)號(hào)和code2seesion操作
TiktokEncryptedParam 主要是前端傳過來的code和加密后的數(shù)據(jù)
TiktokUserInfoSPI 主要是對(duì)接口的封裝
TiktokUserInfoSPIAdapter 實(shí)現(xiàn)接口
使用AES對(duì)稱加密
關(guān)于小程序獲取手機(jī)號(hào)失敗是什么原因和小程序獲取手機(jī)號(hào)沒反應(yīng)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。