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

Slo*_*oem 30 facebook facebook-graph-api

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

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

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

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

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

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

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

Nit*_*mer 33

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

App Access令牌通常不会过期.生成后,它们无限期有效.但是,如果由于某种原因需要使App Access令牌无效,则可以在应用程序的设置中重置App Secret.重置App Secret后,您需要执行以下步骤以生成新的应用访问令牌.

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


编辑

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

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


gul*_*yuz 15

这应该工作,请查看下面.

使令牌无效(也称为注销); 对该端点进行HTTP GET调用;

https://api.facebook.com/restserver.php?method=auth.expireSession&format=json&access_token=<access_token>
Run Code Online (Sandbox Code Playgroud)

ps我的答案是从2012年开始...从那时起,Facebook API已经发生了许多重大变化.阅读up2date Facebook开发人员文档更加可靠

  • 此方法似乎不再有效.点击该URL我得到以下响应:`{"error_code":3,"error_msg":"未知方法","request_args":[{"key":"方法","值":"auth.expireSession"} ,{ "键": "格式化", "值": "JSON"},{ "键": "的access_token", "值": "<myaccesstoken>"}]}` (11认同)
  • 在没有提供替代解决方案的情况下进行投票并不是建设性的方法...... (4认同)
  • 为什么建议使用REST API方法?它清楚地说有'请注意:我们正在弃用REST API.我们建议您继续使用OAuth 2.0.我们不会在Graph API中支持这种方法 (2认同)
  • 同意!但到目前为止只有这个界面可以用于此目的.如果你知道任何其他选择,请提供帮助 (2认同)

ton*_*ton 10

像@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"}]}
Run Code Online (Sandbox Code Playgroud)

撤销请求:

$ curl -X DELETE "https://graph.facebook.com/v2.7/me/permissions?access_token=${token}"
{"success":true}
Run Code Online (Sandbox Code Playgroud)

验证撤销:

$ 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"}}
Run Code Online (Sandbox Code Playgroud)


OfL*_*ers 5

这里发布的答案已经过时了.强制您的令牌过期:登录您的Facebook帐户,转到"设置",然后点击左侧的"应用"

设置选择

删除应用程序:

在此输入图像描述

这将迫使令牌过期.