Facebook访问令牌:服务器端与客户端流

时间:2012-01-30 17:21:20

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

Facebook docs

  

Facebook平台支持两种不同的OAuth 2.0流程供用户登录:服务器端(在规范中称为身份验证代码流)和客户端(称为隐含的流量)。只要您需要从Web服务器调用Graph API,就会使用服务器端流程。当您需要从客户端调用Graph API时,使用客户端流,例如在Web浏览器中运行的JavaScript或从本机移动或桌面应用程序调用。

这些流程采取的访问令牌之间有什么区别? 似乎它们的长度不同。

我们可以在客户端上使用服务器端流量令牌吗?否则,我们可以在服务器上使用客户端流程令牌吗?

4 个答案:

答案 0 :(得分:32)

目前,Facebook说这是关于access_tokens的。在服务器端OAuth

  

如果access_token是从服务器端OAuth调用生成的,那么   结果 access_token将有更长的到期时间   默认即可。如果在仍然存在有效的长寿命的情况下进行呼叫   用户access_token为该用户,返回的用户access_token来自   这第二个电话可能相同或可能已经改变,但两者中都有   如果到期时间将设置为很长的到期时间。

客户端OAuth流程将为您提供现有的,未过期的,短期用户access_token 。为了使这个access_token长寿,facebook提供了一个新的端点,用较长的生命周期来访问短暂的access_token和access_token。端点是

https://graph.facebook.com/oauth/access_token?             
    client_id=APP_ID&
    client_secret=APP_SECRET&
    grant_type=fb_exchange_token&
    fb_exchange_token=EXISTING_ACCESS_TOKEN 

另请注意

  

目前,长期存在的用户access_token有效期为60天   而短期用户access_tokens目前从1到1有效   2个小时。

摘自https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/

答案 1 :(得分:9)

对于那些喜欢我的人在2014年面临同样的问题,Facebook改进了访问令牌的文档。

  

令牌是便携式的

     

了解访问令牌的一个重要方面是它们是可移植的。获得访问令牌后,您可以使用它来从移动客户端,Web浏览器或从服务器到Facebook的服务器进行呼叫。如果在客户端上获得令牌,您可以将该令牌发送回服务器并在服务器到服务器调用中使用它。如果通过服务器调用获得令牌,您还可以将该令牌发送到客户端,然后从客户端进行调用。

(来自https://developers.facebook.com/docs/facebook-login/access-tokens/#portabletokens

是的,您可以在服务器上使用来自客户端的访问令牌,反之亦然;正如naveen已经说过的那样,区别在于客户获得的tokes是短暂的,而服务器则是长寿的。您还可以按照此处的说明将短期令牌转换为长期令牌:https://developers.facebook.com/docs/facebook-login/access-tokens/#extending

答案 2 :(得分:1)

令牌可用于进行API调用,因为它表示您已通过身份验证并有权执行某些操作。

代码不能直接用于进行任何API调用。必须先使用您的应用密码兑换,才能获得令牌

换句话说,代码就像一个加密的令牌,只有拥有应用机密的人才能解密它。

顺便说一句,您的应用机密应仅出现在您的服务器代码中,绝不会出现在移动或Web客户端中。

视频基本上在13:00左右解释了这一切 https://developers.facebook.com/docs/facebook-login/security

答案 3 :(得分:0)

用户访问令牌(以及页面访问令牌)在服务器端或客户端环境中都是相同的(除了时间戳到期之外) )。

app 访问令牌在服务器端或客户端都完全相同。