8

我已经完成了我的应用程序,然后在 3 个 FB 帐户上进行了尝试,一切正常,但第 4出现永久性错误(它无法获取访问令牌):

com.restfb.exception.FacebookOAuthException:收到 OAuthException 类型的 Facebook 错误响应:预期为 1“。” 在明信片和有效载荷之间的输入中。

我尝试删除该应用程序并在此帐户上重新安装几次,但没有任何改变。

我使用 Java 和 restFB 客户端。

这是我获取访问令牌的代码:

if (request.getParameter("code") != null) {
    String code = request.getParameter("code");
    String url = "https://graph.facebook.com/oauth/access_token?"
        + "client_id=" + clientId + "&" + "client_secret="
        + clientSecret + "&" + "code=" + code + "&" + "redirect_uri="
        + redirectURL +"&type=web_server";
    String accessToken=readUrl(url).split("&")[0].replaceFirst("access_token=", "");
    //....
}

我在这里看到有人遇到同样的错误,他说解决方案是:

替换“|” 使用“%257C”使我的访问令牌无效”

我真的无法理解他的意思。

4

4 回答 4

2

虽然很尴尬 - 我会说实话,以防它帮助别人:

当我收到此错误消息时,我不小心将 Google access_token(例如ya29.A0A...)复制/粘贴到 Facebook 图形 API 路由中。:)

于 2021-02-07T05:12:03.477 回答
1

可能值得记录对/oauth/access_token请求的响应以及您提取用作访问令牌的值。

对于不起作用的帐户,请检查/oauth/access_token响应之前是否包含其他参数access_token。IIRC 我看到过类似的回复

expiry=86400&access_token=AAAxxxx
于 2012-02-17T04:24:28.903 回答
1

检查以确保您在签署请求之前验证 Facebook 返回的“代码”参数,而不是“访问令牌”。那是我犯的错误。

于 2015-08-04T01:39:31.437 回答
0

我遇到了同样的问题,调试后我唯一的结论是,当这个消息被抛出时,它可能只是令牌过期或无效。使用新生成的令牌进行检查不应引发此错误。

于 2015-07-20T12:31:41.990 回答