用户通过将他们重定向到的 URL 在我的网站上登录 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 上的访问 token
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
从 token 中可以看出它有一个到期日期。
token 在请求后几个小时过期。如果我使用 scope=offline_access 发出请求,我不应该收到没有到期日期的访问 token 吗?
最佳答案
旧帖子,但信息可能对其他人有用。
Facebook 现在默认禁用 offline_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
参见 this page了解更多详情
关于即使使用 offline_access,Facebook 访问 token 也会过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4214148/