1.背景
?最近負(fù)責(zé)了一個微信小程序項目,在微信小程序的登錄和授權(quán)上遇到了一些問題。項目結(jié)束后把遇到的問題整理了一下,希望能對大家有所幫助~
2.目錄
- 對于服務(wù)范圍開放的小程序,要有游客模式;
- 登錄時需要提供可取消或拒絕登錄選項;
- 獲取手機號和獲取微信賬號信息的接口分開獲??;
- 默認(rèn)頭像昵稱&自定義頭像昵稱的處理;
- 關(guān)于播放視頻;
2.1 對于服務(wù)范圍開放的小程序,要有游客模式
?關(guān)于游客模式,官方的說法是為了給用戶提供更好的使用體驗,不強制用戶必須登錄后才能進(jìn)入小程序。如要求必須授權(quán)頭像昵稱等信息才能繼續(xù)使用小程序,會導(dǎo)致某些用戶放棄使用該小程序。
因此在小程序中上架審核時,多數(shù)情況下需要具有游客模式才能審核通過。
這里需要注意的是官方提出的是“對于服務(wù)范圍開放”的小程序需要有游客模式。
如果你們的小程序是內(nèi)部使用的,未完全開放用戶注冊,或者是需要通過更多方式完成身份驗證后才能提供服務(wù)的小程序,是可以直接引導(dǎo)用戶進(jìn)行賬號登錄的,例如學(xué)校系統(tǒng)、內(nèi)部員工系統(tǒng)或其他非完全開放的系統(tǒng)。
?所以產(chǎn)品同學(xué)在設(shè)計開放用戶注冊類型的小程序時,需要確定好哪些頁面是游客可以訪問的,哪些頁面(功能)是必須登錄后才能訪問(使用)的哦。如果一開始沒有確定好,后期再修改的話可能要面對開發(fā)同學(xué)們的怒吼了。
2.2 登錄時需要提供可取消或拒絕登錄選項
?在小程序的登錄頁面,需要提供可取消或者拒絕登錄的按鈕。如下圖示:

?如果在登錄頁面沒有取消按鈕或者拒絕登錄的按鈕,提交審核的時候很有可能審核失敗。
2.3 獲取手機號和獲取微信賬號信息的接口分開獲取
?微信官方為了用戶隱私安全,在微信小程序中獲取用戶綁定手機號和獲取微信賬號信息的接口是分開獲取的。意味著如果需要獲取用戶的手機號、頭像和微信昵稱,需要調(diào)用2個接口去分別獲取相關(guān)信息。
?微信小程序中獲取授權(quán)信息的接口需要通過按鈕來觸發(fā),且每個按鈕觸發(fā)1次只能調(diào)用1個授權(quán)接口。所以如何優(yōu)雅的獲取用戶的手機號和微信信息就是一個值得思考的問題。因為大部分小程序都是使用手機號碼登錄,所以我們需要考慮的問題其實是在哪一步獲取微信授權(quán)信息。
?這里可以看一下美團(tuán)小程序的邏輯:
美團(tuán)小程序需要先獲取手機號碼進(jìn)行登錄,登錄后直接跳轉(zhuǎn)至授權(quán)信息頁讓用戶進(jìn)行授權(quán)。在授權(quán)頁面用戶只有左上角的返回按鈕和授權(quán)按鈕,如果用戶不點擊授權(quán)則無法成功登錄。

團(tuán)隊內(nèi)部溝通過之后覺得類似這種授權(quán)方式過于強硬,用戶體驗不太好。經(jīng)過溝通后決定使用另外一種解決方案:
1. 用戶通過手機號碼登錄后,小程序跳轉(zhuǎn)至登錄前的頁面。不通過頁面的形式強制用戶授權(quán)微信信息。
2. 每次當(dāng)用戶訪問個人中心頁面時,前端判斷用戶是否已授權(quán)微信信息,若沒有授權(quán)則通過彈窗的形式提醒用戶“當(dāng)前未獲取微信授權(quán)信息,是否獲取?”
3. 若用戶點擊“確定”則調(diào)用微信授權(quán)接口來獲取微信用戶信息。若用戶點擊“取消”則關(guān)閉彈窗,用戶能夠繼續(xù)進(jìn)行其他的正常操作。
備注:因為我們用的是微信小程序提供的tabbar,所以主菜單上面的按鈕不能增加觸發(fā)事件,只能在用戶訪問個人中心頁面時通過前端頁面進(jìn)行判斷。
2.4 默認(rèn)頭像昵稱&自定義頭像昵稱的處理
?當(dāng)用戶通過手機號碼登錄后系統(tǒng)會給用戶一個默認(rèn)的昵稱和頭像。登錄后用戶可以對昵稱和頭像進(jìn)行自定義修改。(一般默認(rèn)昵稱采用“用戶_XXXX”的形式,默認(rèn)頭像都是一樣的。)
?當(dāng)用戶授權(quán)獲取微信信息時我們會拿到用戶的微信頭像和昵稱,這個時候需要判斷下是否要替換用戶現(xiàn)有的頭像和昵稱。此時對于用戶修改過的部分是不能替換的,只能替換默認(rèn)頭像或默認(rèn)昵稱。為了區(qū)別用戶自定義頭像和昵稱,采用了以下方案:
1. 設(shè)置Name1和Name2兩個字段記錄用戶的默認(rèn)昵稱。在小程序端展示的昵稱為Name2。
2. 若Name2與Name1字段相同,則表示用戶尚未手動修改過昵稱,直接替換即可。
3. 若Name2與Name1字段內(nèi)容不同,說明用戶手動修改過昵稱,則繼續(xù)使用Name2字段內(nèi)容作為用戶的昵稱,不再替換微信昵稱。
?微信頭像也是同理。當(dāng)用戶頭像為空時,默認(rèn)使用系統(tǒng)默認(rèn)頭像。在獲取微信信息后,需要判斷用戶頭像是否為空:若用戶頭像為空,則將用戶頭像替換為微信頭像。若用戶頭像非空,則不再進(jìn)行替換。

2.5 關(guān)于播放視頻
小程序如果需要播放視頻的話,需要添加類目“文娛-視頻”才能成功通過審核。
需要注意的是添加文娛類目需要有相關(guān)的資質(zhì)證明,如果沒有添加對應(yīng)類目,在審核的時候有可能不能通過哦~
Ps.如果你的小程序能夠上傳視頻,但是沒有添加對應(yīng)的類目,建議在提交審核的時候刪除掉所有的視頻內(nèi)容~
3.結(jié)尾
?以上就是這次在做微信小程序項目中登錄和授權(quán)部分遇到了問題了,如果有遺漏或者不準(zhǔn)確的地方希望大家能夠不吝指教~