不同类型的facebook访问令牌

时间:2012-12-17 09:59:46

标签: facebook facebook-graph-api oauth-2.0 facebook-oauth facebook-access-token

我有点困惑。如果有人能向我澄清,我会很高兴 -

我通过以下方式获得的令牌之间有什么区别:

  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']
  3. 它们看起来都不一样,我不明白我应该使用哪种。

    谢谢!

1 个答案:

答案 0 :(得分:2)

第一种方法记录在facebook文档中的Login as an App下:

  

以应用程序身份登录可以获得允许的访问令牌   您代表应用程序向Facebook API发出请求   比用户。这很有用,例如修改参数   您的应用程序,创建和管理测试用户,或阅读您的应用程序   例如,见解。 App访问令牌也可用于发布   代表已授予发布的用户向Facebook发送内容   对您的申请的许可。

正如文档中所提到的,您应该只在服务器端编码中使用此方法,在这种方法中,您的代码更容易受到恶意攻击者的攻击(与客户端代码相比)。请记住:重要的是,您的App Secret永远不会与任何人分享。将应用程序密码视为您的应用程序帐户密码。如果其他人对您的应用程序保密,您的应用程序可能会受到损害。此方法对应于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