當用戶使用「Facebook 登入」建立帳號或登入應用程式時,有機會授予您要求的權限。但用戶也有機會拒絕授予公開個人檔案以外的所有權限。如果用戶對於與應用程式分享該資訊感到不自在,或者不瞭解該資訊會如何用於加強體驗時,用戶便可選擇拒絕授權。
當用戶選擇拒絕授權時,應用程式必須尊重用戶的選擇並仍然提供絕佳的用戶體驗。
一般而言,應用程式會以下列三種方式回應:
在某些情況下,應用程式的運作無需特定的要求權限。在此情況下,最簡單的回應方式是尊重對授權的拒絕,然後繼續將用戶帶入應用程式。
在以下範例中,Flick Finder 如果能夠存取 user_likes
權限,就能夠提供更好的電影建議。但因為用戶拒絕授予該權限,Flick Finder 就只能提供較為一般的建議。
這是最簡單的選項,而且可讓選擇拒絕授予某些權限的用戶感覺受到尊重。
用戶可能因為不瞭解為何應用程式需要該資訊而拒絕授權。在此情況下,應用程式可顯示對話方塊來說明為何需要該資訊,以及會如何用於加強體驗。
在以下範例中,Flick Finder 顯示一個對話方塊,說明如果能取得電子郵件地址,應用程式就能夠在新電影推出時發送更新資訊。「新增電子郵件」按鈕會將用戶帶回「Facebook 登入」流程,讓用戶可從該處授予 email
權限。
請注意:在此範例中,用戶仍然有機會不授予 email
權限。
對於應用程式功能非常關鍵或需要性極高的權限,您可採取這種策略。
自行收集某些資訊可能非常容易。
在以下範例中,Flick Finder 想要收集用戶的生日,以便建議適合年齡的電影。如果用戶在使用 Facebook 登入時拒絕透露生日,Flick Finder 仍可在「Facebook 登入」流程以外,於應用程式內建立位置來收集該資訊。建議您在用戶熟悉應用程式一段時間後才這樣做,以便用戶能更容易瞭解該權限會如何加強體驗。
可如此收集的資訊包括 user_hometown
、user_location
、user_birthday
或甚至 email
。
當用戶在「Facebook 登入」流程中拒絕授權時,應用程式可輕鬆偵測此行為,並且使用上述策略回應。
在 Android 上,您可呼叫 Facebook Android SDK 中 AccessToken
物件的 getDeclinedPermissions
方法。
在 iOS 上,您可呼叫 Facebook iOS SDK 中的 [FBSDKAccessToken declinedPermissions]
方法。
若要偵測拒絕授予的權限,您可呼叫 Graph API 中 User
物件的 permissions
關係連線。您可透過反覆檢查回應,收集所有拒絕授予的權限:
FB.api('/me/permissions', function(response) { var declined = []; for (i = 0; i < response.data.length; i++) { if (response.data[i].status == 'declined') { declined.push(response.data[i].permission) } } alert(declined.toString()) });
若要偵測拒絕授予的權限,您可呼叫 Graph API 中 User
物件的 permissions
關係連線:
GET https://graph.facebook.com/me/permissions?access_token=USER_ACCESS_TOKEN
如此會產生以下形式的回應:
{ "data": [ { "permission": "user_birthday", "status": "granted" }, { "permission": "public_profile", "status": "granted" }, { "permission": "email", "status": "declined" } ]}
從以上回應,應用程式會知道用戶已授予 user_birthday
和 public_profile
權限,但選擇拒絕授予 email
權限。
若要提供用戶絕佳的「Facebook 登入」體驗,能夠流暢地處理拒絕的權限是非常重要的一部分。
建置上述策略可確保已下載並安裝應用程式的用戶能夠在不感到分心和挫折的情況下登入,不至於影響應用程式的聲譽和應用程式商店評價。