我通过以下方式获得的令牌之间有什么区别:
https://graph.facebook.com/oauth/access_token?
client_id=YOUR_APP_ID
&client_secret=YOUR_APP_SECRET
&grant_type=client_credentials
FB.getAuthResponse()['accessToken']
它们看起来都不一样,我不明白我应该使用哪种。
谢谢!
答案 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。