知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!
您當(dāng)前位置>首頁(yè) » 新聞資訊 » 小程序相關(guān) >
微信小程序獲取用戶信息方案介紹(附可用DEMO)
發(fā)表時(shí)間:2021-1-5
發(fā)布人:葵宇科技
瀏覽次數(shù):81
背景
小程序一個(gè)比較重要的能力就是獲取用戶信息,也就是使用 wx.getUserInfo
接口。我們發(fā)現(xiàn)幾乎所有的小程序都會(huì)調(diào)用這個(gè)接口。雖然我們?cè)谠O(shè)計(jì)文檔上有提出最好的設(shè)計(jì)是在真正要用戶信息的情況下才去獲取用戶信息,不過很多開發(fā)者并沒有按照我們的期望去做,導(dǎo)致用戶在使用的時(shí)候有很多困擾。
歸結(jié)起來(lái)有幾點(diǎn):
開發(fā)者在首頁(yè)直接調(diào)用
wx.getUserInfo
進(jìn)行授權(quán),彈框有會(huì)使得一部分用戶放棄小程序的使用。開發(fā)者沒有處理用戶拒絕彈框的情況,有部分小程序強(qiáng)制要求用戶授權(quán)頭像昵稱等信息才能繼續(xù)使用小程序。
用戶沒有很好的方式重新授權(quán),雖然在前幾個(gè)版本我們?cè)黾恿?/span>
設(shè)置
頁(yè)面可以讓用戶選擇重新授權(quán),但是操作還是不夠便捷。開發(fā)者希望進(jìn)到首頁(yè)就獲取到用戶的
unionId
,以便和之前已經(jīng)關(guān)注了公眾號(hào)的用戶畫像關(guān)聯(lián)起來(lái)。開發(fā)者默認(rèn)將
wx.login
和wx.getUserInfo
綁定使用,這個(gè)是由于我們一開始的設(shè)計(jì)缺陷和實(shí)例代碼導(dǎo)致:getUserInfo
必須通過wx.login
在后臺(tái)生成session_key
后才能調(diào)用。
為了解決以上幾點(diǎn),我們更新了三個(gè)能力:
使用組件來(lái)獲取用戶信息,用戶拒絕授權(quán)后也可以重新彈窗再次授權(quán)
若用戶滿足一定條件(下文有詳細(xì)介紹),則可以用
wx.login
獲取到的code直接換到unionId
wx.getUserInfo
不依賴wx.login
就能調(diào)用得到數(shù)據(jù)。
獲取用戶信息組件介紹
組件變化:
open-type
屬性增加getUserInfo
:用戶點(diǎn)擊時(shí)候會(huì)觸發(fā)bindgetuserinfo
事件。新增事件
bindgetuserinfo
:當(dāng)open-type
為getUserInfo
時(shí),用戶點(diǎn)擊會(huì)觸發(fā)。可以從事件返回參數(shù)的detail
字段中獲取到和wx.getUserInfo
返回參數(shù)相同的數(shù)據(jù)。
示例:
< button open-type = "getUserInfo" bindgetuserinfo = "userInfoHandler" > Click me |
和 wx.getUserInfo
不同之處在于:
API
wx.getUserInfo
只會(huì)彈一次框,用戶拒絕授權(quán)之后,再次調(diào)用將不會(huì)彈框組件
由于是用戶主動(dòng)觸發(fā),不受彈框次數(shù)限制,只要用戶沒有授權(quán),都會(huì)再次彈框
直接獲取unionId
考慮很多場(chǎng)景下,業(yè)務(wù)方申請(qǐng)userinfo授權(quán)主要為了獲取unionid。我們鼓勵(lì)開發(fā)者在不騷擾用戶的情況下合理獲得unionid,而僅在必要時(shí)才向用戶彈窗申請(qǐng)使用昵稱頭像。為此,凡使用“獲取用戶信息組件”獲取用戶昵稱頭像的小程序,在滿足以下全部條件時(shí),將可以靜默獲得unionid。
在微信開放平臺(tái)下存在同主體的App、公眾號(hào)、小程序。
用戶關(guān)注了某個(gè)相同主體公眾號(hào),或曾經(jīng)在某個(gè)相同主體App、公眾號(hào)上進(jìn)行過微信登錄授權(quán)。
getUserInfo 和 login
很多開發(fā)者會(huì)把login和getUserInfo捆綁調(diào)用當(dāng)成登錄使用,其實(shí)login已經(jīng)可以完成登錄,可以建立賬號(hào)體系了,getUserInfo只是獲取額外的用戶信息。
在login獲取到code,然后發(fā)送到開發(fā)者后端,開發(fā)者后端再通過接口去微信后端換取到openid和sessionKey(并且現(xiàn)在會(huì)將unionid也一并返回)之后,然后把3rd_session返回給前端,就已經(jīng)完成登錄行為。而login行為是靜默,不必授權(quán)的,不會(huì)對(duì)用戶造成騷擾。
getUserInfo只是為了提供更優(yōu)質(zhì)的服務(wù)而存在,比如展示頭像昵稱,判斷性別,通過unionId和其他公眾號(hào)上已有的用戶畫像結(jié)合起來(lái)提供歷史數(shù)據(jù)。所以不必在剛剛進(jìn)入小程序的時(shí)候就強(qiáng)制要求授權(quán)。
推薦使用方法
調(diào)用
wx.login
獲取code
,然后從微信后端換取到sessionKey
,用于解密getUserInfo
返回的敏感數(shù)據(jù)。使用
wx.getSetting
獲取用戶的授權(quán)情況如果用戶已經(jīng)授權(quán),直接調(diào)用 API
wx.getUserInfo
獲取用戶最新的信息用戶未授權(quán),在界面中顯示一個(gè)按鈕提示用戶登入,當(dāng)用戶點(diǎn)擊并授權(quán)后就獲取到用戶的最新信息。
獲取到用戶數(shù)據(jù)后可以進(jìn)行展示或者發(fā)送給自己的后端。
文檔中的quickStart已經(jīng)更新
特別注意
為了給用戶提供更好的小程序環(huán)境,我們約定在一段時(shí)間后(具體時(shí)間會(huì)做通知),若還出現(xiàn)以下情況(包括但不限于),將無(wú)法通過審核
初次打開小程序就彈框授權(quán)用戶信息
未處理用戶拒絕授權(quán)的情況
強(qiáng)制要求用戶授權(quán)
已經(jīng)上線的小程序不會(huì)受到影響。
可用demo
:wx-getUserInfo以及getOpenID.rar
相關(guān)案例查看更多
相關(guān)閱讀
- 網(wǎng)站建設(shè)靠譜公司
- 云南做百度小程序的公司
- 小程序定制開發(fā)
- 電商網(wǎng)站建設(shè)
- 云南網(wǎng)站建設(shè)靠譜公司
- 云南小程序商城
- 云南軟件定制
- 云南網(wǎng)絡(luò)營(yíng)銷顧問
- 模版信息
- 云南小程序定制
- web開發(fā)
- 網(wǎng)站建設(shè)服務(wù)
- 網(wǎng)站小程序
- 百度小程序
- 做網(wǎng)站
- web開發(fā)技術(shù)
- 云南小程序開發(fā)費(fèi)用
- 正規(guī)網(wǎng)站建設(shè)公司
- 昆明小程序公司
- 昆明做網(wǎng)站建設(shè)的公司排名
- 小程序
- 前端
- 生成海報(bào)
- 前端技術(shù)
- 網(wǎng)站建設(shè)選
- 云南網(wǎng)站建設(shè)費(fèi)用
- 網(wǎng)站維護(hù)
- 關(guān)鍵詞快速排名
- 云南小程序被騙蔣軍
- 網(wǎng)站優(yōu)化公司