如何强制Facebook访问令牌过期?

时间:2012-05-29 21:43:29

标签: facebook facebook-graph-api

我正在做一些在offline_access到期之后的测试。我认为,由于我的应用程序与Facebook进行的所有交互都是通过我的服务器完成的,并且是由用户在几个应用程序端点(手机应用程序,网站,桌面应用程序)上的活动启动的,我可以使用应用程序访问令牌发布到墙上代表我的用户,假设即使我在授权期间请求的访问令牌过期,应用程序仍然是被授权的。这似乎是文档here暗示的内容

  

作为应用程序进行身份验证允许您获取访问令牌,该令牌允许您代表应用程序而不是用户向Facebook API发出请求。 [...] App访问令牌也可用于代表已向您的应用程序授予发布权限的用户向Facebook发布内容。

     

App Access令牌通常不会过期。生成后,它们无限期有效。

但是,我需要测试一下。所以我需要使一些令牌过期。我尝试使用您在开发者网站中创建的官方测试用户,这些用户只能与您应用的沙盒和其他用户进行交互,但他们的令牌似乎永久有效一小时。

所以我尝试使用我为此创建的真实facebook用户,并且更改我读过的密码应该使令牌过期。但事实并非如此。令牌仍然在调试器中报告有效,我仍然可以将它用于很多事情,包括发布到我的墙上。完全退出Facebook网站后,我甚至可以继续使用此令牌。

是什么给出的?如何获得过期的access_token以便我可以测试我的应用程序访问令牌?

编辑:我认为它会起作用。我创建了我的应用程序访问令牌,并使用CLIENT-SIDE流程获取仅持续2个小时的用户访问令牌,因此我实际上可以等待它过期。到期后,我使用Graph API资源管理器尝试发布状态更新,但未能告诉我令牌何时到期。然后,我使用成功的应用程序令牌尝试了相同的操作。

8 个答案:

答案 0 :(得分:33)

但它在文档中就是说,就在您引用的最后一行之后:

  

App Access令牌通常不会过期。一旦生成,它们就是   无限期有效。 但是,如果您需要使您的应用无效   由于某种原因访问令牌,您可以重置您的App Secret   应用程序的设置。一旦您的App Secret被重置,您将需要   完成以下步骤以生成新的应用访问令牌。

因此,为了您的测试目的,请重置应用程序密钥。


修改

哦,我完全误解了你 使用户令牌无效更容易,只需将me/permissions连接与DELETE请求一起使用即可。

这将删除登录用户的应用程序 您可以从资源管理器工具中尝试,只需在路径字段左侧的选择框中选择DELETE。

答案 1 :(得分:15)

这应该有效,请查看以下内容。

使您的令牌无效(也就是注销);对该端点进行HTTP GET调用;

https://api.facebook.com/restserver.php?method=auth.expireSession&format=json&access_token=<access_token>

P.S。我的回答是从2012年开始......从那时起,Facebook API已经发生了许多重大变化。阅读up2date Facebook开发人员文档

更可靠

答案 2 :(得分:9)

喜欢@guleryuz回复,但是以实用的方式:

给出有效的access_token ${token}

$ curl -X GET "https://graph.facebook.com/v2.7/me/permissions?access_token=${token}"
{"data":[{"permission":"user_friends","status":"granted"},{"permission":"email","status":"granted"},{"permission":"manage_pages","status":"granted"},{"permission":"business_management","status":"granted"},{"permission":"pages_messaging","status":"granted"},{"permission":"pages_messaging_phone_number","status":"granted"},{"permission":"public_profile","status":"granted"}]}

撤销请求:

$ curl -X DELETE "https://graph.facebook.com/v2.7/me/permissions?access_token=${token}"
{"success":true}

验证撤销:

$ curl -X GET "https://graph.facebook.com/v2.7/me/permissions?access_token=${token}"
{"error":{"message":"Error validating access token: The session was invalidated explicitly using an API call.","type":"OAuthException","code":190,"error_subcode":466,"fbtrace_id":"E2UhrNzyyzZ"}}

答案 3 :(得分:5)

此处发布的答案已过时。强制您的令牌过期:登录您的Facebook帐户,转到&#34;设置&#34;,然后点击&#34;应用&#34;在左侧

Settings selection

删除应用:

enter image description here

这会强制令牌过期。

答案 4 :(得分:2)

用于查看权限

https://graph.facebook.com/v2.7/{userID}/permissions?access_token={acessToken}

对于删除权限,请在"method=delete"

之前添加&access_token=
https://graph.facebook.com/v2.7/{userID}/permissions?method=delete&access_token={acessToken}

答案 5 :(得分:2)

另一种可能的解决方案是使用具有自定义到期时间的测试帐户:

enter image description here

enter image description here

答案 6 :(得分:1)

您可以尝试通过更改您的Facebook密码来复制行为

答案 7 :(得分:-3)

https://www.facebook.com/connect/login_success.html#access_token=&#34;&的access_token#34; &安培; expires_in = 1.minutes 这里代替&#34; access_token&#34;输入您的访问令牌,不带引号,访问令牌将在1分钟后过期。