30

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

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

应用程序访问令牌通常不会过期。一旦生成,它们将无限期有效。

但是,我需要对此进行测试。所以我需要使一些令牌过期。我尝试使用您在开发人员站点中创建的官方测试用户,该用户只能与您的应用程序的沙箱和其中的其他用户进行交互,但他们的令牌似乎永久有效一小时。

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

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

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

4

8 回答 8

34

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

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

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


编辑

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

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

于 2012-05-29T22:34:35.570 回答
15

这应该工作,检查下面。

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

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

ps 我的回答是从 2012 年开始......从那时起,Facebook API 发生了许多重大变化。阅读 up2date Facebook 开发者文档更可靠

于 2012-05-30T05:44:00.740 回答
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"}]}

撤销请求:

$ 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"}}
于 2016-07-27T21:19:37.593 回答
5

此处发布的答案已过时。要强制您的令牌过期:登录您的 Facebook 帐户,转到“设置”,然后单击左侧的“应用程序”

设置选择

删除应用程序:

在此处输入图像描述

这将强制令牌过期。

于 2016-01-20T19:48:28.110 回答
3

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

在此处输入图像描述

在此处输入图像描述

于 2018-07-26T19:15:51.867 回答
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}
于 2017-01-05T12:15:45.790 回答
1

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

于 2017-03-01T06:58:30.677 回答
-3

在此 url https://www.facebook.com/connect/login_success.html#access_token="access_token" &expires_in=1.minutes"access_token"输入不带引号的访问令牌,访问令牌将在 1 分钟后过期。

于 2015-04-11T05:22:55.513 回答