如果我没有将它存储在我的数据库中,我可以检索Facebook访问令牌吗?

问题描述:

我被问过如果用户在前一个会话中授予许可,我是否可以从Facebook检索Facebook访问令牌。问题在于我们的业务逻辑层由不同的小组维护,并且与Web开发小组的发布时间表不同。如果我要获得离线访问令牌,我可能无法将其存储长达两个月。对于在此期间获得的任何用户,是否有一种方法可以在没有用户进一步干预的情况下从Facebook获取令牌?如果我没有将它存储在我的数据库中,我可以检索Facebook访问令牌吗?

我认为这可能是一个安全漏洞,但我们的一位高级开发人员认为,Facebook很有可能提供这样的功能。

感谢, 罗布

+0

不要打扰长期存储访问令牌。如果您有离线权限(您需要这种权限才能工作),那么您可以根据需要请求新的令牌。 –

总之号

但与离线访问请求没有完成。 您可以在没有任何用户点击的情况下申请新的令牌。

你刚刚得到一个新的离线访问令牌并使用它。用同样的方法,如果你没有请求离线访问,并访问令牌已经过期了,它并没有明确说,但它的工作:

除了访问令牌(该参数的access_token)时,响应包含令牌到期之前的秒数(expires参数)。一旦令牌到期,您将需要重新运行上述步骤以生成新的代码和access_token,但如果用户已经授权了您的应用,则不会再提示他们这样做。如果您的应用程序需要具有无限到期时间的访问令牌(可能在用户未使用应用程序后代表用户执行操作),则可以请求offline_access权限。

http://developers.facebook.com/docs/authentication/

这样,你不必将它们存储在所有。 除非您确实想在用户不使用应用程序时执行操作。

每当用户重新登录时,您都会得到access_token,offline_access或不是!你可以在JS中用FB.getAccessToken()来获得它;

有没有办法来检索(离线)访问令牌,当用户实际上没有登录。

如果你想存储的很长一段时间的访问令牌,你将被要求问为offline_access权限,否则访问令牌将只持续很短的时间。无论哪种方式,最好将它存储在cookie中或本地,因为它肯定会改善您的应用程序的延迟。但请务必尽可能经常检查其有效性。

我想access_token的意思是,你有权限代表用户做事情。如果您必须在没有用户FB登录的情况下执行某些操作,则需要离线access_token。但要小心,离线access_token将被忽略,当用户更改他/她的FB密码或删除应用程序时。

因此,我希望没有任何方法可以在没有用户权限的情况下获得另一个access_token。我认为最简单的方法是检查access_token来创建/ us?access_token = GET请求,然后检查答案。如果答案是错误,access_token不起作用,您必须更新它。

从流中获取access_token有点痛苦。但是你也可以把变量放到重定向链接中。

例: https://graph.facebook.com/oauth/authorize?client_id=API_KEY&scope=email $ REDIRECT_URI = YOUR_REGISTERED_APP_URL%3F $ PARAM

$ PARAM也能像一个流动的信息:流量= 12342323

所以,当你的用户回来$ _GET [ '流']将是12342323.