2

我有點困惑。我會很高興,如果有人能澄清這對我來說 -不同類型的Facebook訪問令牌

什麼是我通過以下方式獲得的令牌之間的區別:

  1. 獲得令牌以這樣的方式https://graph.facebook.com/oauth/access_token? client_id=YOUR_APP_ID &client_secret=YOUR_APP_SECRET &grant_type=client_credentials
  2. 對戰獲得使用Javascript SDK令牌 - FB.getAuthResponse()['accessToken']

他們看起來都不同,我不明白我使用的應該。

謝謝!

+0

小心'client_secret = YOUR_APP_SECRET',你不能在客戶端代碼中使用它(例如瀏覽器,移動應用程序中的javascript)。 – Gan

回答

2

第一種方法就是Facebook文檔中Login as an App下記載:

記錄作爲一個應用程序可以獲取的訪問令牌,它允許 你做代表一個應用程序的請求發送給Facebook的API,而 比用戶。例如,修改您的應用的 參數,創建和管理測試用戶,或者閱讀您的應用的洞察信息,這非常有用。應用程序訪問令牌還可以用於代表授予您應用程序發佈權限的用戶發佈內容到Facebook。

如文檔中提到的,你應該只使用在服務器端的代碼,其中代碼更免受惡意攻擊的安全(相對於客戶端代碼)這個方法。請記住:重要的是,您的應用程序的祕密永遠不會與任何人共享。把應用祕密想象成你的應用賬號密碼。如果其他人將您的應用程序保密,您的應用程序可能會受到影響。此方法對應於OAuth 2.0中的Client Credential Grant

第二種方法適用於可能沒有服務器端編碼的客戶端應用程序。這允許您的應用代表授權用戶進行API調用。在SDK的封面下,此方法對應於OAuth 2.0中的Implicit Grant

現在,您應該知道這兩種方法的存在是因爲Facebook採用了OAuth 2.0。

爲了充分理解這兩種方法的用法和差異,我強烈建議您閱讀RFC 6749 - The OAuth 2.0 Authorization Framework。如果您發現文字難以閱讀,您可以使用一些簡單的閱讀應用,如Evernote Clearly on Google Chrome。要獲得簡化且易於理解的OAuth 2.0版本,您可以閱讀Aaron Parecki的OAuth 2 Simplified