配搭現有登入系統使用「Facebook 登入」

您可能想使用自訂登入機制和「Facebook 登入」來建立您的應用程式。這份指南說明一些情境,並且提供您處理應用程式用戶體驗的注意事項。

概覽

您可以建置自己的登入系統,用戶可以使用自己的電郵和密碼註冊應用程式,然後建立一個帳戶。通常在此情況下,應用程式會使用電郵認證步驟來驗證身分。

或者您可以選擇完全用「Facebook 登入」當成他們的登入系統。在這種情況下,用戶使用「Facebook 登入」註冊應用程式,並建立了一個帳戶,接著驗證步驟就交給 Facebook 處理。

除了這些情況,您的應用程式可能需要處理更複雜的情況:

  • 用戶使用自己的電郵和密碼註冊您的應用程式,但是稍後卻想要使用「Facebook 登入」從 Facebook 帳戶取得資料、帖子在生活時報、或只是用來在日後登入。
  • 用戶使用自己的電郵和密碼註冊應用程式,但稍後選擇另外使用 Facebook 帳戶登入。這份指南假定一開始提供的電郵就是與用戶 Facebook 相關聯的電郵。
  • 用戶使用「Facebook 登入」註冊,但稍後選擇使用電郵地址和密碼登入帳戶。

這份指南概括了我們認為處理這些情況最好的方法。

將「Facebook 登入」和已登入帳戶建立關聯

本節說明用戶使用應用程式自訂登入系統來建立帳戶的情況。稍後用戶想將仍然登入的帳戶和 Facebook 帳戶建立關聯。例如:用戶可以使用電郵地址和密碼註冊 Spotify,但稍後當用戶想要將聆聽活動發佈在生活時報上時,也可以使用「Facebook 登入」將帳戶與 Facebook 帳戶建立關聯。

1.將「Facebook 登入」流程新增至應用程式

閱讀指南並在應用程式使用「Facebook 登入」流程來完成這個步驟。在 Spotify 的範例中,您在有用戶表示希望發佈聆聽活動時開始「Facebook 登入」流程,或您可以提供一個明顯的選項,讓用戶將帳戶與 Facebook 帳戶連結。

2.處理帳戶資訊合併

當用戶使用您自己的登入系統登入應用程式,而且接著完成「Facebook 登入」流程之後,您的應用程式將有兩個非常重要的項目必須合併:

  • 由應用程式建立的帳戶
  • 識別用戶 Facebook 帳戶的 Facebook 資訊

在大多數應用程式中,原始帳戶會儲存在資料庫的資料表,因此最簡單的方法就是將 Facebook 帳戶資訊與資料庫的帳戶建立關聯。

一般來說,這比您在儲存用戶 Facebook 帳戶資訊的地方建立新的資料表更好。將資料表分開,而不是在現有帳戶資料表新增更多欄列的優勢,是讓您可以快速支援一段時間內其他 OAuth 帳戶登入。

日後如果相同用戶選擇登入您的應用程式,您就可以比對儲存在資料庫的訊息,讓用戶直接以其中一個方法登入。

將個別建立帳戶與「Facebook 登入」合併

在這種情況下,用戶使用如電郵和密碼這種自有憑證登入您的應用程式,而該用戶登出後,又選擇以「Facebook 登入」來登入應用程式。當下相同用戶會有兩個帳戶在應用程式裡,一個透過應用程式登入系統建立,另一個則透過「Facebook 登入」流程建立。為了提供用戶最佳體驗,您的應用程式應該嘗試合併這些帳戶。

這份指南假定每一個應用程式建立的帳戶,都有相關聯的電郵地址和密碼。不過,用戶也有可能用不同的電郵建立帳戶,與他們的 Facebook 帳戶建立關聯。在這種情況下,您應該要在應用程式提供用戶明顯的「帳戶合併」選項,接著允許用戶手動指定希望合併的兩個個別帳戶。
此外,如果您的自訂帳戶並未儲存電郵地址,那麼請再一次允許用戶手動指定希望合併的帳戶。

1.修改「Facebook 登入」流程來要求電郵權限

若您的應用程式自訂登入系統使用電郵地址來識別每個帳戶,您應該也要在「Facebook 登入」流程要求用戶的電郵地址(使用 email 權限)。請參閱要求權限指南以瞭解操作方式。

2.合併「Facebook 登入」帳戶以及應用程式帳戶

成功使用 Facebook 登入後,您將取得用戶的電郵地址、Facebook 編號、以及存取憑證。您的應用程式應該要搜尋使用相同電郵地址建立的現有帳戶。如果有,您應該要合併這兩個帳戶並新增 Facebook 資訊到現有帳戶,如上所建議

此時,您應該可如以往一般將這名用戶登入。

如果您的資料庫並沒有這筆電郵地址的現有記錄,那麼您應該將這名用戶認定為新用戶。

將手動登入資訊新增至使用「Facebook 登入」建立的帳戶

當有用戶使用「Facebook 登入」建立帳戶,但稍後想使用獨特憑證和密碼登入帳戶時,就會發生這種情況。例如:Netflix 有一個網頁應用程式使用「Facebook 登入」和一般登入系統,但也有一個 Xbox 360 應用程式,其中用戶只能使用一般登入系統。

1.確保「Facebook 登入」電郵經過驗證

如果您使用電郵地址當作辨別各個帳戶的獨特憑證,您的應用程式應該要驗證和用戶 Facebook 帳戶相關聯的電郵地址(在「Facebook 登入」取得)是否有效。您可以在應用程式建立程式碼,寄發驗證電郵到「Facebook 登入」取得的地址(不過您或許仍要將這個步驟列入一般登入系統)。

2.要求用戶提供新密碼(以及其他憑證)

電郵地址經過驗證之後,您現在可以要求用戶提供密碼,並告知用戶日後可以用這組密碼登入您的應用程式。用戶提供了密碼之後,您就可以將密碼新增至目前儲存帳戶資訊的資料庫中相同的部分。

如果您應用程式的登入系統不使用電郵,而使用如用戶名稱這種用戶產生的識別,則您也應該同時要求用戶提供,用來當成密碼。

用戶可能期望應用程式讓他們可以從登入帳戶移除 Facebook 帳戶關聯,而這應該只牽涉到從資料庫帳戶資料表移除特定用戶的 Facebook 資訊。