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

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

總覽

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

或者您可以選擇完全用「Facebook 登入」作為登入系統。在這種情況下,用戶只要使用「Facebook 登入」註冊應用程式,就能建立一個帳號,後續的驗證步驟則交由 Facebook 處理。

不過除了上述的例子,您的應用程式可能還需要處理更複雜的情況:

  • 用戶一開始使用自己的電子郵件和密碼註冊您的應用程式,但之後卻想使用「Facebook 登入」以便從 Facebook 帳號取得資料、發佈貼文到動態時報,或是單純作為日後的登入方式。
  • 用戶一開始使用自己的電子郵件和密碼註冊應用程式,但之後卻選擇另外使用 Facebook 帳號登入。本指南假設用戶一開始提供的電子郵件,就是他們 Facebook 帳號使用的電子郵件。
  • 用戶一開始使用「Facebook 登入」註冊,但之後選擇使用電子郵件地址和密碼登入帳號。

本指南將說明我們認為處理這些情況最好的方法。

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

本節要說明的情況,是用戶一開始使用應用程式自訂的登入系統建立帳號,但之後想將仍然登入的帳號與其 Facebook 帳號建立關聯。例如:用戶一開始可以使用電子郵件地址和密碼註冊 Spotify,但之後當他們想將聆聽活動發佈到動態時報時,也可以使用「Facebook 登入」將 Spotify 帳號與 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 資訊。