Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook访问令牌即使脱机访问也会过期_Facebook_Oauth - Fatal编程技术网

Facebook访问令牌即使脱机访问也会过期

Facebook访问令牌即使脱机访问也会过期,facebook,oauth,Facebook,Oauth,用户通过URL在我的网站上登录Facebook,该URL会将他们重定向到 https://graph.facebook.com/oauth/authorize?client_id=116908145XXXXXX&display=page&scope=offline_access&redirect_uri=http://localhost:8000/account/services/?service=facebookcallback 在回调页面上,我使用收到的代码发出一个请求,在这个URL上获取访

用户通过URL在我的网站上登录Facebook,该URL会将他们重定向到
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\u uri=http%3A%2F%2Flocalhost%3A8000%2Faccount%2Fservices%2F%3Fservice%3Dfacebookcallback&client\u id=1169081450447&scope=offline\u access&client\u secret=…

我得到的答复是
access_-token=116908145XXXXXX | 2.3M2HLAUQJPWTGFEXUK6O3WUUUU3;3600.1290081600-100001796185871 | S3MG…&expires=3912

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


令牌在请求数小时后过期。如果我使用scope=offline\u access发出请求,我是否应该收到一个没有过期日期的访问令牌?

您使用offline\u访问权限获得的令牌,正如facebook在其文档中所说的那样是“长寿命”的,但并不是说它没有过期/无限期。即使您获得此非时间限制的访问\u令牌,如果用户更改其密码或删除您的应用程序,该令牌仍可能过期


但要直接回答您的问题,是的,您应该使用“scope=offline\u access”获得一个长期访问令牌。另外,请检查对话框是否显示“随时访问我的数据”

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

Facebook现在默认禁用离线访问。如果仍要使用应用程序迁移,则必须启用该迁移

随着迁移的结束,代币将“短命”,只持续一两个小时。您可以通过向请求获得一个持续约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 

有关更多详细信息,请参见

好吧,您的令牌是否已过期,或者您只是认为它将过期?是的,它显示了正确的对话框,但令牌将在不到一天的时间内过期。引自facebook注意:如果应用程序未请求脱机访问权限,则访问令牌是有时间限制的。当用户注销Facebook时,有时间限制的访问令牌也会失效。如果应用程序已从用户获得脱机访问权限,则访问令牌不会过期。但是,每当用户更改其密码时,它就会失效。