微信授權(quán)登錄:從入門到精通
現(xiàn)在,市面上大多數(shù)應(yīng)用都選擇了接入微信授權(quán)登錄這一快捷登錄方式,那么,怎么拆解微信授權(quán)登錄呢?這篇文章里,作者就介紹了微信授權(quán)登錄的各種對(duì)接場(chǎng)景、以及授權(quán)登錄設(shè)計(jì)等方面的內(nèi)容,想了解的同學(xué),就一起來看看吧。
微信授權(quán)登錄是微信開放給第三方應(yīng)用的快捷登錄方式,因其用戶體量大、對(duì)接簡(jiǎn)單、體驗(yàn)感好,市面上大多應(yīng)用都已選擇接入,本文將具體介紹微信授權(quán)登錄的各種對(duì)接場(chǎng)景。
一、授權(quán)方式
目前微信授權(quán)的方式有3種:
1)常規(guī)授權(quán)。這種授權(quán)方式是最簡(jiǎn)單最快速的授權(quán)方式,發(fā)起授權(quán)時(shí),微信直接打開授權(quán)頁面,點(diǎn)擊允許即可完成授權(quán)。
2)關(guān)注公眾號(hào)授權(quán)。這種授權(quán)方式要求用戶關(guān)注應(yīng)用綁定的公眾號(hào)進(jìn)行授權(quán),發(fā)起授權(quán)時(shí),微信會(huì)打開對(duì)應(yīng)公眾號(hào)關(guān)注頁,關(guān)注公眾號(hào)即可完成授權(quán)。
3)手機(jī)號(hào)授權(quán)。這種授權(quán)方式目前只能在小程序中調(diào)用,發(fā)起授權(quán)時(shí),小程序內(nèi)彈出授權(quán)提示窗口,點(diǎn)擊手機(jī)號(hào)即可完成授權(quán)。
(PS:自2023年8月26日起,手機(jī)號(hào)快速驗(yàn)證組件將需要付費(fèi)使用。標(biāo)準(zhǔn)單價(jià)為:每次組件調(diào)用成功,收費(fèi)0.03元。)
二、調(diào)用途徑
微信授權(quán)調(diào)用途徑目前有4種:
- 網(wǎng)頁調(diào)用。在微信瀏覽器中發(fā)起授權(quán),調(diào)出授權(quán)頁面。
- 小程序調(diào)用。在小程序中發(fā)起授權(quán),調(diào)出授權(quán)頁面。
- 掃碼調(diào)用。web 頁面生成授權(quán)二維碼,微信“掃一掃”掃碼調(diào)出授權(quán)頁面。
- App 跳轉(zhuǎn)調(diào)用。在 App 中發(fā)起授權(quán),跳轉(zhuǎn)到微信并調(diào)出授權(quán)頁面。
三、授權(quán)信息
目前通過微信授權(quán)能夠獲取到的授權(quán)信息大多是技術(shù)參數(shù),產(chǎn)品經(jīng)理主要需要關(guān)注以下幾個(gè)重點(diǎn)的信息:
- 頭像。
- 昵稱(用戶名,非真實(shí)姓名)。
- 性別。
- 國家。
- 地區(qū)(用戶資料中填寫的省份和市區(qū))。
- 手機(jī)號(hào)(通過手機(jī)號(hào)授權(quán)方式才能獲取到)。
四、授權(quán)技術(shù)原理
有一些產(chǎn)品經(jīng)理害怕接入微信授權(quán)登錄需要對(duì)現(xiàn)有產(chǎn)品的用戶體系進(jìn)行大改,所以有必要簡(jiǎn)單介紹一下微信授權(quán)的技術(shù)原理。
業(yè)務(wù)系統(tǒng)接入微信授權(quán)后,在授權(quán)發(fā)生時(shí),業(yè)務(wù)系統(tǒng)會(huì)接到微信接口提供的用戶身份碼(openid),這是用戶身份的唯一標(biāo)識(shí),業(yè)務(wù)系統(tǒng)只需要在首次授權(quán)時(shí),將該身份碼綁定到對(duì)應(yīng)的用戶上,下次授權(quán)再次發(fā)生時(shí),如果該身份碼已綁定賬號(hào),即可登錄對(duì)應(yīng)賬號(hào)。
簡(jiǎn)單的授權(quán)登錄流程:
結(jié)合上述技術(shù)原理,可以用流程圖來畫一個(gè)簡(jiǎn)單的授權(quán)登錄流程。
以上流程只適用于只有微信授權(quán)登錄一種登錄方式的業(yè)務(wù)系統(tǒng),目前的大多數(shù)產(chǎn)品都支持多種登錄方式,實(shí)際場(chǎng)景要比這復(fù)雜得多。
五、復(fù)雜場(chǎng)景的授權(quán)登錄設(shè)計(jì)
很多平臺(tái)都是先做了常規(guī)的注冊(cè)登錄,之后才接入微信授權(quán)登錄,所謂的“常規(guī)”指的是一般平臺(tái)比較常用的賬號(hào)密碼登錄或當(dāng)下比較流行的手機(jī)驗(yàn)證碼登錄,平臺(tái)之前可能已經(jīng)有了一定用戶量,所以在接入授權(quán)登錄時(shí),需要考慮舊用戶的綁定問題。
如果平臺(tái)原來是通過手機(jī)號(hào)進(jìn)行用戶注冊(cè),現(xiàn)在接入的也是微信的手機(jī)號(hào)授權(quán),處理舊用戶的流程會(huì)更簡(jiǎn)單。
這里雖然是通過手機(jī)號(hào)授權(quán)登錄,但同樣建議將獲取到的 openid 綁定到對(duì)應(yīng)的用戶上,剛剛說過,目前手機(jī)號(hào)授權(quán)登錄只能在小程序中使用,如果不綁定 openid,在其他端口進(jìn)行授權(quán)時(shí),就無法識(shí)別到已經(jīng)授權(quán)成功的用戶。
上面的流程有一個(gè)致命的問題不知道你發(fā)現(xiàn)沒有,就是授權(quán)獲取的手機(jī)號(hào)在平臺(tái)中的賬號(hào)如果已經(jīng)綁定了另外一個(gè)微信用戶的 openid,按照上述流程,當(dāng)前微信用戶通過手機(jī)號(hào)授權(quán)可以登錄該賬號(hào),但如果通過其他授權(quán)方式登錄,就登錄不了了。
這個(gè)問題有兩種優(yōu)化方案,第一種簡(jiǎn)單粗暴,不做判斷,只要驗(yàn)證通過就將當(dāng)前微信用戶的 openid 綁定上去。
第二種則溫和一點(diǎn),判斷一下賬號(hào)綁定的 openid 跟當(dāng)前微信用戶是否一致,不一致時(shí)提醒用戶,交給用戶選擇。
需要注意,如果用戶沒有選擇解除并綁定新的 openid,那么更換授權(quán)方式無法登錄的問題依然存在。
上述提到的常規(guī)授權(quán)方式也可能產(chǎn)生類似問題,解決思路是一樣的,這里就不再畫圖了,各位有興趣可以自己動(dòng)手改改。
六、用戶不同意授權(quán)的解決方案
在詢問授權(quán)時(shí),用戶有可能拒絕應(yīng)用獲取微信授權(quán),因此產(chǎn)品經(jīng)理在設(shè)計(jì)微信授權(quán)流程時(shí),也需要考慮到這種情況的發(fā)生。
如果產(chǎn)品只能通過微信授權(quán)登錄,這種情況發(fā)生時(shí),完全沒有辦法解決,所以如果有可能的話,還是建議開發(fā)多種登錄方式,在遇到用戶不同意授權(quán)的情況時(shí),系統(tǒng)自動(dòng)切換到常規(guī)的登錄方式。
如果你希望能夠盡可能獲取到用戶的授權(quán),可以采用“二次授權(quán)”的方式,如果首次獲取授權(quán)被用戶拒絕,用戶通過常規(guī)方式登錄成功后,可以判斷登錄的賬號(hào)是否有綁定微信賬號(hào),如果沒有,此時(shí)可以再調(diào)用一次授權(quán),讓用戶再次確認(rèn),不過,這種方式對(duì)用戶的體驗(yàn)不是很友好,請(qǐng)謹(jǐn)慎使用。
另外一種方式可以嘗試下,有可能提升用戶授權(quán)的成功率。由于授權(quán)頁面都是微信提供的,微信只簡(jiǎn)單提示授權(quán)要獲取用戶的哪些信息,有些用戶出于安全方面的考慮可能會(huì)習(xí)慣性拒絕授權(quán),因此可以在調(diào)用授權(quán)之前,平臺(tái)先彈出一個(gè)提示,告知用戶接下來需要獲取用戶的微信授權(quán),并同時(shí)說明,為什么要獲取授權(quán),會(huì)獲取哪些信息,這些信息會(huì)用于什么地方,并承諾不會(huì)濫用和出售用戶的信息等等。其主要目的是讓用戶了解接下來要發(fā)生的事情,并盡最大可能打消用戶對(duì)授權(quán)的疑慮。
七、多平臺(tái)產(chǎn)品的授權(quán)方式選擇
有些產(chǎn)品規(guī)模比較大,幾乎做到了“全端覆蓋”,web 端、App、小程序、h5等,考慮到用戶體驗(yàn),不同的端口建議選擇不同的授權(quán)方式。比如,web 端是通過掃碼授權(quán)登錄的,因此通過掃碼關(guān)注公眾號(hào)登錄是完全沒問題的。
但是在 h5 就不適用了,如果在 h5 發(fā)起關(guān)注公眾號(hào)授權(quán),微信會(huì)從原網(wǎng)頁跳轉(zhuǎn)到公眾號(hào)關(guān)注頁,關(guān)注后用戶可能會(huì)點(diǎn)擊進(jìn)入公眾號(hào)或通過文章列表進(jìn)入其他頁面,從而導(dǎo)致用戶跳離了目標(biāo)頁面。
在小程序中,如果調(diào)用手機(jī)號(hào)授權(quán)被用戶拒絕,可以退而求其次,改為普通授權(quán),這種方式不會(huì)獲取用戶的手機(jī)號(hào),用戶的戒心相對(duì)沒有那么重,更容易獲得用戶的同意。
至于 App 端,就比較靈活了,只要微信支持的,采用什么方式都行,因?yàn)樵谑跈?quán)成功之后,都會(huì)返回到 App 主體。
以上便是本文的全部?jī)?nèi)容,感謝閱讀,我正在參與《人人都是產(chǎn)品經(jīng)理》年度最受歡迎作家評(píng)選,如果你覺得我的文章對(duì)你有用,煩請(qǐng)為我投上寶貴的一票,謝謝。
投票傳送門:https://996.pm/MRxv6
專欄作家
產(chǎn)品錦李,公眾號(hào):產(chǎn)品錦李(ID:IMPM996),人人都是產(chǎn)品經(jīng)理專欄作家。不務(wù)正業(yè)的產(chǎn)品經(jīng)理和他的產(chǎn)品設(shè)計(jì)。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
3、下面留言的問題,這個(gè)問題就不對(duì),殺死小程序后不會(huì)要求重新授權(quán)登錄。因?yàn)楸镜卮媪擞脩鬿penID與手機(jī)號(hào)碼的映射關(guān)系。出現(xiàn)重新授權(quán)的原因是因?yàn)橛脩舻膕ession實(shí)效了,需要通過wx.checkSession這個(gè)接口去校驗(yàn)
還是先看下微信的接口文檔吧,
1、用戶進(jìn)入小程序后,是由小程序端調(diào)用微信官方登錄wx.login接口,再把登錄憑證code回傳只開發(fā)者服務(wù)端,由服務(wù)端調(diào)微信的接口auth.code2Session 接口,獲取open_id、union_id,換句話說,獲取用戶的open_id、UID是不需要用戶做手動(dòng)授權(quán)的。
2、要真按上面的流程設(shè)計(jì),那用戶每一次進(jìn)入小程序都需要用戶授權(quán)去獲取用戶的手機(jī)號(hào)碼,uinID對(duì)你來說就是完全沒有意義的東西,都沒用到
大佬您好,新入行的,我想問問第一種登錄方式(常規(guī)授權(quán)),是移動(dòng)app可以接入么,然后他是收費(fèi)的不。我在微信開放臺(tái)看了下,寫的我看著有點(diǎn)懵
移動(dòng)app可以使用常規(guī)授權(quán),就是跳轉(zhuǎn)到微信中,只需微信用戶點(diǎn)擊同意授權(quán)即可,據(jù)我所知這個(gè)目前是免費(fèi)的
您好,想請(qǐng)教您幾個(gè)問題。①現(xiàn)在用戶在小程序中只要微信授權(quán)了一次,后面就不再調(diào)用授權(quán)組件了嗎?②如果是這樣的話,那微信的收費(fèi)豈不是隨著新注冊(cè)用戶數(shù)量的減少而減少?③現(xiàn)實(shí)中為什么有的小程序后臺(tái)殺死后,再次進(jìn)入還需要再一次授權(quán)?
①授權(quán)有一定的有效期,過了有效期之后需要重新授權(quán),目前官方文檔沒有明確給出這個(gè)有效期時(shí)間,據(jù)查不同場(chǎng)景不同授權(quán)方式的有效期不同。②收費(fèi)是按調(diào)用成功收費(fèi)的,因此每調(diào)用一次就收一次費(fèi),跟短信一樣,每發(fā)一條收一次費(fèi)。有的小程序?yàn)榱斯?jié)省這筆費(fèi)用,會(huì)進(jìn)行兩次授權(quán),先用常規(guī)授權(quán)方式獲取微信用戶的 openid,判斷用戶是否有手機(jī)號(hào),如果沒有才調(diào)用手機(jī)號(hào)授權(quán),如果有,就不再調(diào)用,這樣體驗(yàn)感會(huì)差一點(diǎn),但可以有效減少重復(fù)授權(quán)的扣費(fèi)。③這種應(yīng)該是程序上沒處理好,比如程序沒有保存好用戶的登錄信息,導(dǎo)致殺后臺(tái)后需要重新授權(quán)。
非常感謝您的耐心指導(dǎo)~