即使使用offline_access,Facebook访问令牌也会过期

时间:2010-11-18 11:16:16

标签: facebook oauth

用户通过重定向到的网址在我的网站上登录Facebook https://graph.facebook.com/oauth/authorize?client_id=116908145XXXXXX&display=page&scope=offline_access&redirect_uri=http://localhost:8000/account/services/?service=facebookcallback

在回调页面上,我使用我收到的代码发出请求以获取访问令牌,在此URL

https://graph.facebook.com/oauth/access_token?code=2.3m2hLauQJpWTGFExUK6O3w__.3600.1290081600-100001796185871%7.....&format=json&redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Faccount%2Fservices%2F%3Fservice%3Dfacebookcallback&client_id=116908145040447&scope=offline_access&client_secret=...

我得到的回应就是这个 access_token=116908145XXXXXX|2.3m2hLauQJpWTGFExUK6O3w__.3600.1290081600-100001796185871|S3MG...&expires=3912

从令牌中可以看出它有一个到期日期。

令牌在请求后几个小时到期。如果我使用scope = offline_access?

发出请求,我是否应该收到没有到期日期的访问令牌

2 个答案:

答案 0 :(得分:2)

旧帖子,但信息可能对其他人有用。

Facebook现在默认禁用offline_access。如果您仍想使用它,则必须启用应用程序迁移。

随着迁移的关闭,令牌将“短暂存在”并持续一两个小时。您可以通过向

发出请求,获得持续约60天的扩展令牌
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 

有关详细信息,请参阅this page

答案 1 :(得分:1)

使用offline_access权限获得的令牌,就像facebook在他们的文档中所说的那样“长寿”,但并不是说它没有过期/无限期。即使你得到这个没有时间限制的access_token,如果用户更改了密码或者他删除了你的应用程序,它仍然会过期。

但是要直接回答你的问题,是的,你应该使用“scope = offline_access”获得一个长期存在的access_token。此外,请检查对话框是否显示“随时访问我的数据”