如果您有 Facebook 入口網站的問題需要協助,請造訪入口網站使用說明。
若要輸入裝置專用的 Facebook 程式碼,以登入您的智慧型電視、相機、印表機和其他裝置,請造訪裝置專用的 Facebook 頁面。
建置「裝置專用的 Facebook 登入」,讓用戶能用自己的 Facebook 帳號登入您的應用程式或服務。此功能讓用戶可登入輸入或顯示功能有限的裝置,這些裝置包括智慧型電視、數位相框或物聯網裝置。
使用裝置登入,您的裝置會顯示出英數代碼,要求用戶在桌上型電腦或智慧型手機的網頁上輸入。使用您應用程式或服務的用戶則可以授予權限。裝置在應用程式取得權限後會收到存取權杖,讓您的應用程式提出圖形 API 要求,以辨識用戶和取得資訊,將用戶的裝置體驗個人化。
如果您是為 Apple TV、Android TV 或 Fire TV 建立電視應用程式,建議分別使用 Facebook tvOS SDK 或 Facebook Android SDK。
本指南說明如何在不使用上述 SDK 下手動整合裝置登入。
這些指南描述如何在裝置和服務之間設計一個明確、安全且一致的登入體驗。
首先考慮您想要在用戶體驗的哪一部分要求用戶登入或連結 Facebook,部分裝置將立即要求,而有些則可能會在稍後的體驗中要求。
若要確保最可行、一致且可靠的用戶體驗,應盡量將按鈕設計成像官方「Facebook 登入」按鈕。
從視覺設計觀點來看,您應該
請描述登入的相關優點,例如:「看看你的朋友在看什麼」或是「從你的 Facebook 相簿瀏覽照片」。
當有人點擊行動呼籲時,您的裝置會對傳回程式碼的 Facebook API 進行呼叫。
您的介面會顯示訊息,告知用戶要造訪網站並輸入代碼,訊息內容如下:「下一步,使用桌上型電腦或智慧型手機造訪 facebook.com/device(http://facebook.com/device),然後輸入這組代碼」。顯示從 Facebook 裝置登入 API 收到的完整代碼。這個代碼長度介於 6 到 12 個字元。
您可以加入 Close
或 Cancel
按鈕,讓用戶可以取消裝置登入流程,如此應該會將用戶導回初始登入畫面。
當代碼顯示在螢幕上時,您的裝置會輪詢裝置登入 API,以瞭解是否有人授權您的應用程式。幾分鐘後,如果用戶沒有輸入代碼,裝置登入 API 就會傳回 code_expired
錯誤。當您的裝置收到此錯誤訊息後,您應該要取消登入流程,然後介面應該會顯示行動呼籲。
QR 代碼也可以與網址中內嵌的用戶代碼一起產生,透過將 user_code
參數加入網址可完成此操作:
https://www.facebook.com/device?user_code=<USER_CODE>
這是用戶在桌上型電腦或行動瀏覽器造訪 facebook.com/device 時所看到的流程。首先用戶會看到可輸入代碼的文字欄位:
在用戶輸入代碼並點擊 Continue
後,就可以選擇要授予的權限:
因此用戶知道登入程序成功,接著他們會看到確認訊息:
在裝置介面上,您應該也要顯示確認訊息。在理想情況下,這則訊息應該要包含用戶姓名,可能的話也要包含 Facebook 大頭貼照。
在您的裝置持續顯示此確認訊息,直到用戶點擊 Continue
按鈕為止。有些用戶可能需要在其他地點將代碼輸入電腦,因此在繼續操作前,他們需要時間返回到您的裝置,並查看確認訊息。
用戶點擊 Continue
後,您的裝置就可以顯示很棒的個人化體驗。
用戶應該能夠從您的裝置登出,而且裝置不應儲存用戶與 Facebook 的連結。若要執行此操作,需要在您的裝置功能表提供 Log out from Facebook
或 Disconnect from Facebook
選項。
當用戶選擇這個選項之後,您的裝置應該會從記憶體中刪除儲存的存取權杖。如果您將存取權杖儲存於資料庫或雲端儲存,您也應該移除這些存取權杖。您不需要進行 API 呼叫,也能將存取權杖設定為無效。
當有用戶登出之後,您的裝置應該要在步驟 1 顯示初始行動呼籲。
裝置專用的 Facebook 登入可以讓裝置透過網路直接進行 HTTP 呼叫。以下是您的裝置可以進行的 API 呼叫和回應。
載入您的應用程式主控板,然後將「產品」>「Facebook 登入」>「設定」>「使用裝置登入」變更為「是」。
當用戶點擊 Connect to Facebook
或 Log in with Facebook
行動呼籲時,您的裝置應該會進行指向下列項目的 HTTP POST:
POST https://graph.facebook.com/v2.6/device/login access_token=<YOUR_APP_ID|CLIENT_TOKEN> scope=<COMMA_SEPARATED_PERMISSION_NAMES> // e.g. public_profile,user_likes redirect_uri=<VALID_OAUTH_REDIRECT_URL>
scope
為選用參數,且必須包含經登入審查批准使用之登入權限的逗點分隔清單。
您可以在「應用程式設定」->「進階」中找到 CLIENT_TOKEN
,並應該結合應用程式編號(以直立線符號 |
分隔),形成完整的 access_token
。
redirect_uri
為選擇性參數。當您提供網址時,用戶在成功完成登入後就會重新導向至該網址。這可讓您將用戶登入您的應用程式網站,以進行其他帳號管理作業。這個網址必須是如「應用程式設定」->「進階」中設定的有效 OAuth 重新導向 URL。回應形式如下:
{ "code": "92a2b2e351f2b0b3503b2de251132f47", "user_code": "A1NWZ9", "verification_uri": "https://www.facebook.com/device", "expires_in": 420, "interval": 5 }
這個回應代表:
您的裝置應該顯示 user_code
,並告知用戶在電腦或智慧型手機上造訪 verification_uri
,例如 facebook.com/device。請參閱用戶體驗。
您的裝置應該要輪詢裝置登入 API,以查看用戶是否成功授權您的應用程式。您應該要每隔 interval
的間隔就進行一次這項動作,回覆您在步驟 1 的呼叫,其中的間隔為每 5 秒一次。您的裝置應該要輪詢:
POST https://graph.facebook.com/v2.6/device/login_status access_token=<YOUR_APP_ID|CLIENT_TOKEN> code=<LONG_CODE_FROM_STEP_1> // e.g. "92a2b2e351f2b0b3503b2de251132f47"
根據用戶在授權流程的位置對 API 呼叫的回應。您將會收到存取權杖,或是含有用於剖析的特定子代碼的錯誤物件:
錯誤子代碼 | 回應範例 | 意義 |
---|---|---|
|
| 用戶已成功授權裝置。裝置現在可以使用 |
|
| 用戶尚未授權您的應用程式。依照步驟 1 回應中指定的頻率持續輪詢。 |
|
| 您的裝置輪詢頻率過高。請將輪詢頻率調降至首次 API 呼叫中指定的間隔。 |
|
| 裝置代碼已到期。取消裝置登入流程,並將用戶導回初始畫面。 |
當您收到存取權杖時,這位用戶就已經成功授權您的應用程式。您應該在裝置上保留這個存取權杖。
讓用戶知道登入流程成功,您的裝置應該會顯示用戶名稱和大頭貼照(如果有的話),直到他們點擊 Continue
。若要取得用戶的名稱和大頭貼照,您的裝置應該要進行標準圖形 API 呼叫:
GET https://graph.facebook.com/v2.3/me? fields=name,picture& access_token=<USER_ACCESS_TOKEN>
您會取得以下形式的回應:
{ "name": "John Doe", "picture": { "data": { "is_silhouette": false, "url": "https://fbcdn.akamaihd.net/hmac...ile.jpg" } }, "id": "2023462875238472" }
顯示用戶的名稱和大頭貼照,直到他們在您的裝置點擊 Continue
。
您的裝置應該要保留存取權杖,以便提出對圖形 API 的其他要求。
裝置登入存取權杖的有效期可長達 60 天,然而可能在一些情況下失效。例如當用戶變更 Facebook 密碼時,存取權杖就會設定為無效。
當權杖無效時,您的裝置應該會從記憶體中刪除權杖。使用您裝置的用戶必須再一次從步驟 1 執行裝置登入流程,以取得有效的新權杖。
我可以透過 HTTP 提出裝置程序要求嗎?
OAuth 2 需要使用 TLS/HTTPS。
我可以透過 GET 方法提出裝置程序要求嗎?
所有裝置程序要求都應該是 POST
要求。
如何更新裝置登入存取權杖?
裝置登入存取權杖的有效期可長達 60 天。
當權杖無效時,您的裝置應該會從記憶體中刪除權杖。使用您裝置的用戶必須再次依照步驟 1 中的描述,執行裝置登入流程,以取得有效的新權杖。
若要深入瞭解更新權杖,請參閱存取權杖。
我在提出 POST 要求時,收到 Invalid API method
錯誤訊息,是哪裡出了問題?
如果您在提出 POST 要求時,得到這類錯誤訊息:
{"error":{"message":"Invalid API method","type":"OAuthException","code":3}}
您可能必須在應用程式啟用「使用裝置登入」。
載入您的應用程式主控板,然後將「產品」>「Facebook 登入」>「設定」>「使用裝置登入」設為「是」。
我的裝置登入存取權杖無效,我該怎麼做?
若存取權杖無效,您的裝置應將該權杖從裝置記憶體刪除,然後再取得新權杖。使用您裝置的用戶必須再次依照步驟 1 中的描述,執行裝置登入流程,以取得有效的新權杖。