Facebook Graph API 拒绝新创建的访问 token

标签 facebook facebook-graph-api-v2.0 spring-social-facebook

今天早些时候,我们网络应用程序的 Facebook 登录流程对某些用户停止工作。当我们尝试获取当前配置文件时,会返回一个错误。它声称我们刚刚通过将用户重定向到 OAuth 登录流程而生成的访问 token 已被拒绝。

给出的原因是:

The access token is invalid since the user hasn't engaged the app in longer than 90 days

对我来说,这没有意义,因为我们不会将访问 token 存储在当前 session 以外的任何地方,并在用户每次使用 Facebook 登录时重新创建它。

GET/me 调用的 Spring Social 堆栈跟踪如下所示:

ERR c.s.f.v.resource.AuthenticationResource Exception when connecting with Facebook
org.springframework.social.RevokedAuthorizationException: The authorization has been revoked. Reason: The access token is invalid since the user hasn't engaged the app in longer than 90 days.
        at org.springframework.social.facebook.api.impl.FacebookErrorHandler.handleFacebookError(FacebookErrorHandler.java:85)
        at org.springframework.social.facebook.api.impl.FacebookErrorHandler.handleError(FacebookErrorHandler.java:59)
        at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)
        at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:775)
        at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:728)
        at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:702)
        at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:350)
        at org.springframework.social.facebook.api.impl.FacebookTemplate.fetchObject(FacebookTemplate.java:220)
        at org.springframework.social.facebook.api.impl.FacebookTemplate.fetchObject(FacebookTemplate.java:215)

该问题可能与 changes in the Facebook API 有关,但我看不出这会如何影响我们在每次登录时创建的短期访问 token 。

最佳答案

当我们的集成测试使用测试用户登录时,我遇到了这个问题 - 以下 JSON 从 Graph API 返回:

{
    "error": {
        "message": "The access token is invalid since the user hasn't engaged the app in longer than 90 days.",
        "type": "OAuthException",
        "code": 190,
        "error_subcode": 493,
        "fbtrace_id": "F/1z2AsTRx8"
    },
    "timestamp_microsecond": "2018-05-30 11:22:01.353949"
}

这是一个更大的问题,因为我们的测试用户不会像这样“参与”应用程序。要解决这个问题,我必须:

  • 登录 FB 开发者网站
  • 找到有问题的应用
  • 在角色下查看 -> 测试用户以找到正确的用户
  • 单击用户的“编辑”按钮,然后单击“以此测试用户身份登录”
  • 登录后,转到“设置”->“应用程序和网站”
  • 在用户超过 90 天未与之交互的应用的“已过期”选项卡中查找该应用
  • 点击过期应用上的“查看和编辑”按钮
  • 在弹出窗口中点击“更新访问权限”

完成所有这些步骤后,我的测试用户(和集成测试)再次工作。

关于Facebook Graph API 拒绝新创建的访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50124462/

相关文章:

javascript - 需要拉取 Graph API JSON 并逐步缩小结果范围

android - Share Intent 不适用于将视频上传到 youtube

facebook-graph-api - Facebook PHP SDK 4.0 - 一旦被拒绝就无法重新请求读取权限

java - 在java中使用spring-social-facebook执行简单的FQL查询

spring-social-facebook - 错误消息是 (#12) 版本 v2.8 及更高版本不推荐使用 bio 字段

ios - 登录到 facebook api 和预定的事件

android - 使用facebook最新的SDK获取用户相册?

facebook - 新的应用范围内的用户 ID 的长度是多少

ssl - 如何为新的 Instagram 图形 API 设置和使用 webhook

java - 为 Spring Social 启用日志记录