微信小程序如何做好“授權”設計?

20 評論 22385 瀏覽 271 收藏 10 分鐘

編輯導讀:授權登錄降低了用戶注冊賬號時的操作成本,減少了產品的獲客門檻。在本文中,作者結合案例,盤點了微信小程序授權登錄設計中需要注意的幾點問題,并對功能設計背后的設計思路與原理進行了簡要的分析,供大家一同參考學習。

經歷了四個小程序從0-1的設計/研發/上線的生命周期,深感小程序由于微信生態圈的影響,使它擁有很多便捷的封裝功能,支持直接調用;同時弊端就是導致很多功能受限,不像原生app那樣靈活多變。踩過無數坑,填過無數坑,所以萌生了總結小程序從頭到尾各個環節的知識點,算存檔也算分享給讀者。適合剛入門接觸小程序設計的同學或者是希望深入了解小程序的同學。

本文會從小程序一開始需要掌握的openID、UnionID、授權微信綁定手機號、獲取其他用戶信息,到親身經歷的單一登錄流程改造跨平臺適配作為案例,來介紹這些基本的參數和功能點如何設計。

01 openID

這是微信生態圈中,為了識別用戶,每個小程序或者公眾號對每個用戶生成的一個唯一的ID,類似身份證號,針對該小程序或公眾號具有唯一校驗的屬性。

儲存openID,在用戶下次進入小程序中,可識別用戶身份,實現免登陸功能。小程序本身已經實現了登錄功能,所以降低的開發成本。但獲取openID只適用于規劃中不含有app等其他平臺應用的產品,如果想要實現多應用,在最初設計時,千萬不要用openID!此處踩了大坑,后文中會詳細介紹。

02 UnionID

如果開發者擁有多個移動應用、網站應用、和公眾帳號(包括小程序),可通過 UnionID 來區分用戶的唯一性,因為只要是同一個微信開放平臺帳號下的移動應用、網站應用和公眾帳號(包括小程序),用戶的 UnionID 是唯一的。

換句話說,同一用戶,對同一個微信開放平臺下的不同應用,UnionID是相同的。注意:需要在微信開放平臺將多個應用綁定在同一主體下,才能實現多應用共用一個UnionID,此配置需要前置進行。

03 其他用戶信息

包括:用戶信息、地理位置、定位、通訊地址、發票抬頭、獲取發票、運動步數。

04 微信綁定手機號

獲取用戶微信默認綁定的手機號,需要用戶點擊頁面中的按鈕(button),才可以調用此功能。彈窗里支持用戶修改手機號。如果業務中需要使用手機號來注冊,就可以使用此功能獲取,如業務中不強制要求,則只需獲取用戶openID/UnionID,在必要環節獲取手機號,以提升用戶體驗。
介紹完openID/UnionID兩者的區別,總結一下如何獲取這兩種ID:

  • 點擊頁面中的按鈕,彈出授權彈窗用戶同意授權,才可獲取。注意:用戶的openID是放在【用戶授權獲取昵稱和頭像】中。引申一個知識點,還有一種方式是通過微信官方提供的登錄功能獲取openID,但在獲取UnionID時會出現獲取不到的情況,所以并不推薦使用此方法。
  • 如果開發者帳號下存在同主體的公眾號,并且該用戶已經關注了該公眾號。系統可以直接獲取到用戶的openID/UnionID,無需用戶再次授權。
  • 如果開發者帳號下存在同主體的公眾號或移動應用,并且該用戶已經授權登錄過該公眾號或移動應用。小程序用戶無需再次授權。
  • 用戶在小程序(暫不支持小游戲)中支付完成后,5分鐘內可獲取用戶的openID/UnionID,無需用戶授權。此應用場景,作者所參與的項目中暫時沒有使用過,但感覺掃碼購類似的產品中應該會使用。

舉個栗子,如果你想要獲取用戶的昵稱頭像和手機號,那么需要設計兩次點擊按鈕,并且彈出兩次授權彈窗,一次按鈕點擊獲取一種授權,并且只能放在不同的按鈕中。設計參考:美團、瑞幸、貝殼租房等小程序。

05 單一登錄流程改造跨平臺適配案例

5.1 舊方案的背景及流程圖

我們的產品是一個分銷平臺,在最初規劃和設計時,由于用人成本的因素,并沒有預備研發app,只是單純的希望通過小程序實現運營推廣。但是在運營過程中,特殊的業務模式容易違規,怕被用戶舉報較多導致封號。高層決定不再依托于微信生態圈,從而傾斜資源自主研發app。所以當時小程序的整個登錄流程,需要進行升級改造,用于適配app多設備注冊登錄。

舊方案流程如下:

踩的坑有兩個地方:

第一,未與研發人員明確登錄的概念,研發人員認為獲取到用戶的openID視為登錄成功,對于我們的業務設計來說,獲取到用戶的手機號碼才是真正意義的有效用戶。

第二,由于開始并未規劃app,導致研發人員在取用戶信息時,選擇了獲取用戶的openID,當多個移動應用時,無法獲取用戶的unionID,用戶在各個應用中數據無法打通。

但是改造時,已有300多個授權手機號用戶,所以改造方案花了很長時間探討和研究,最終得出了一個相對來說完整的解決方案。

5.2 改造后的方案

在APP中,我們設計了微信授權登錄、手機號驗證碼登錄,手機號密碼登錄三種登錄模式。微信授權登錄的設計相對來說比較復雜。我只梳理了一個簡易流程,研發的思路由項目經理負責輸出。
產品設計思路:

研發思路(大力感謝小黑同學的貢獻):

在設計過程中,我遇到了一個思維誤區,當時考慮的問題如下:

  • 用戶A—登錄小程序—獲取到openID—綁定了手機號1—視為老用戶
  • 老用戶A—使用微信授權登錄APP—獲取到unionID—綁定了手機號2

如果用戶在app登錄,有了unionID,他綁定了其他手機號怎么辦?這個時候創建一個新用戶嗎?那就存在一個unionid綁定了兩個手機號的情況。

這種場景如何處理?

這個地方的盲區在于,我一定要把openID和unionID關聯起來,其實大可不必。在這種情況下,以手機號為唯一標識,視為兩個用戶即可,只有綁定了相同手機號,數據才會互通合并。創建的新用戶,他的openID為空,獲取到unionID即可。

即:用戶A 是openID+手機號1,用戶B是unionID+手機號2+openID為空。

06 寫在后面

小程序快速便捷的研發模式和迭代模式,可以適應大部分互聯網產品快速迭代、快速試錯的需求,但是全部依賴于微信生態圈會有諸多限制,作為小程序的產品經理,大家應該熟讀小程序和公眾號的文檔,清楚什么可以做什么無法實現,這樣在設計功能時,不會走太多彎路,也避免了與研發同學產生沖突,設計了他們實現不了的需求。

參考網站:https://developers.weixin.qq.com/miniprogram/dev/framework/

最后再次感謝小黑同學的批閱和指正~

 

本文由@Olivia 原創發布于人人都是產品經理,未經許可,禁止轉載。

題圖來自Unsplash, 基于CC0協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 請教一下
    1,用戶使用一個手機號登錄授權公眾號后,這時能夠獲取到用戶得openid。那在用戶不登錄小程序或APP時能獲取到用戶得unionid嗎?我應該是沒有理解unionid得生成節點!

    來自北京 回復
    1. 是不能的,點擊某個按鈕,例如“登錄”,進行觸發,小程序會彈出一個授權彈窗,用戶點擊了同意后,我們才可以獲取用戶的unionid

      來自廣東 回復
  2. 有一個問題,就是獲取到openID不就獲取了用戶的相關信息了么? 比如說 頭像 手機號 等等。像你說的還得重新再獲取手機號嗎?我不太了解,是個小白。請指點一下了。

    來自北京 回復
    1. 獲取手機號的接口和獲取openid是兩個不同的接口

      回復
  3. 您的意思是說,openID或unionID只要獲取到其中一個就行,以手機號為準,一個手機號可能綁定多個openID或unionID,我這樣理解對嗎?

    來自北京 回復
    1. 如果有多個平臺的話,就用unionID,但至于以手機號為主還是ID為主,要具體看業務的邏輯和需求設計,但一般都是一對一的關系,一個unionID對應一個手機號,可以更換手機號或者解除綁定再綁定。如果是以手機號為主,那就是手機號可以綁定多個微信或者可以替換微信。

      來自廣東 回復
    2. 多謝

      來自北京 回復
  4. 差評

    回復
  5. 以前對授權這塊一片糊涂,感謝大佬文章,讓我對這塊空白有了概念,哈哈

    來自安徽 回復
    1. 不客氣~歡迎交流~

      來自廣東 回復
  6. 如果是運營商回收再次放號的用戶,可以通過手機號直接登錄成功,這樣會產生信息泄露的風險。建議增加設備判斷或者3~5個月不使用自動退出登錄的功能。

    來自北京 回復
    1. 目前已設計1個月會退出登錄~謝謝大佬提示

      來自廣東 回復
    2. 通過退出登錄機制能解決上面的問題嗎?具體邏輯是什么呢?

      來自北京 回復
  7. 1、既然是微信授權登陸,為啥還要收入手機號,甚至還要設置密碼。微信授權登陸本身就是為了方便
    2、既然用了手機驗證碼登陸,為啥還要設置密碼

    來自廣東 回復
    1. 1、因為業務需要,業務需要拿到用戶手機號才算是注冊用戶,設置密碼為APP的功能。
      2、因為涉及到錢包和資金問題,所以需要二次校驗,需要設置密碼。
      功能設計的話,要根據具體業務需求來做,我的方案并不一定是個通用方案。

      來自廣東 回復
    2. 如果是這樣的話,微信授權登陸,本身就是偽需求了吧。應該設置為:先用手機號登陸,然后再綁定微信

      感謝分享

      來自廣東 回復
    3. 如果是這樣的話,微信授權登陸,本身就是偽需求了吧。應該設置為:先用手機號登陸,然后再綁定微信

      感謝分享

      來自廣東 回復
    4. 使用微信授權登錄,滿足用戶瀏覽的需求,減少用戶的學習成本,手機號作為用戶后臺識別唯一識別碼,也可實現授權登錄,實際使用比如含支付業務或購買業務時,再設置密碼流程是合理的。

      來自山西 回復
    5. 只有手機號,沒有密碼的話,APP端怎么登錄?web端怎么登錄?只能通過微信掃碼登錄?或者手機驗證碼登錄?但是手機驗證碼收費

      來自廣東 回復
    6. 我現在也在考慮這個問題,有大佬來解答一下嗎,想知道在獲取手機號碼后要不要設置密碼,設置又擔心體驗不好

      來自北京 回復