2014-04-16 165 views
0

我已經建立了自定義的登錄流程根據https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow/ Facebook登錄...Facebook登錄 - 檢測用戶登錄時沒有PHP-SDK

是否enaugh考慮用戶在Facebook化有效用戶登錄如果access_token檢索(訪問令牌的交換代碼)成功(沒有GET錯誤)?

facebook access_token是用戶唯一的東西,只能由用戶「生成」的東西?

或者我應該嘗試使用該access_token檢索用戶信息,並在成功檢查該用戶信息(它具有權限請求的信息,例如電子郵件)之後,纔會將其視爲有效用戶登錄名?

PS:我不想使用Facebook PHP-SDK

+0

請問爲什麼你不想使用SDK? – Lix

+0

@Lix它更清晰,更短,我希望它與其他應用程序相似。 –

回答

1

如果你有要求,不使用官方SDK,那麼我會說,你應該通過查詢/me驗證您檢索令牌。

這是確保您處理有效令牌的最佳方式,因爲當您將它用於請求時,經過Facebook驗證。

如果您正在使用的令牌是無效的,你會得到一個類似的迴應:

{ 
    error: { 
    message: "Invalid OAuth access token.", 
    type: "OAuthException", 
    code: 190 
    } 
} 

用戶的訪問令牌每個用戶獨特每個應用程序。每個應用程序將爲同一用戶返回不同的令牌。

應用程序的訪問令牌是每個應用程序的唯一,爲了找回他們並不需要Facebook的任何請求 - 他們只是APP_ID和app_secret之間的連接:app_id|app_secretmentioned in the documentation:

還有另一種方法調用不需要使用生成的應用程序令牌的Graph API。您只需將您的應用ID和應用程序的祕密作爲參數的access_token當你撥打電話:

http://graph.facebook.com/endpoint?key=value&access_token=app_id|app_secret

選擇使用生成的訪問令牌與這種方法取決於你在哪裏隱藏自己的應用程序的祕密。

+0

因此,如果access_token無效,我會正確理解/我將不會提供嗎?順便說一句:我知道關於應用程序acc令牌和方式如何檢索它,但它是很好的指出:) –

+0

@ jave.web - 是的,你可以嘗試通過打開一個隱身窗口,並試圖打'https ://graph.facebook.com/SOME_ID/ =的access_token some_random_string'? – Lix

+0

如果有其他人會奇怪 - quering'/ me'中沒有用戶標識並且格式爲:::::::::::'https://graph.facebook.com/me?access_token=YourUniqueUserAccessToken ' - 沒有用戶ID,只是access_token :) - 自'/ me'(不同於傳統的'graph.facebook.com/SOME_ID')更好 - 不需要access_token –