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