FB交换令牌api抛出错误

时间:2016-04-13 05:11:29

标签: facebook api rest go oauth-2.0

我正在开发服务器上测试GET请求以交换访问令牌的代码。

Oauth表单网址:

https://www.facebook.com/dialog/oauth?
    client_id=1543358959292867%0A&
    redirect_uri=http%3A%2F%2Flocalhost%3A8080%2FFBLoginCallback&
    response_type=code&
    scope=email+user_birthday+user_about_me

回调w / code。

http://localhost:8080/FBLoginCallback?code=AQAsGssRxA9nDZ2YQ82Dgdw_NB_MsikZxVanO75QG0hKlH9F49v7CEiu5ssBHLmvF_hc4081Q5KcJq9cgC9pyIacz-ekpL6WKv5x0E12-HRzvR7bSImWJMktfTIfbabIDDy3BsOue2GhGos7qlIbU-XJGrzWMehbEhAb4p-2rpd4bVnIqKvaErU2Ma8onUMM8HICyf7IaArOlZs5VYqQDO0IjxsTot5DdU0j8IyBdmtksdspPK-YMhFcJTXabAxO2tWnvOQhAMCH00rlIByCY-xXMIgiLfrnF_YRrs9x5lU2d8ZF2DZrHgXLfnxH1Hh-bGQ#_=_

我收到以下回复。

oauth2: cannot fetch token: 400 Bad Request
Response: {"error":{"message":"The username for your HTTP Basic Authorization must be 1543358959292867","type":"OAuthException","code":101,"fbtrace_id":"HTJcNHH6OmY"}}

问题是我的两台笔记本电脑之一出现此错误。它们都运行完全相同的代码。

这是我用于交换的golang功能。

tok, err := fbConfig.Exchange(oauth2.NoContext, r.FormValue("code"))

1 个答案:

答案 0 :(得分:2)

错误消息显示您的基本身份验证用户名必须为1543358959292867,但您提供的client_id实际上是1543358959292867\n< - 最后添加了新行(编码为{{ 1}}在您的查询参数中。)

我不认为这个问题必然与不同的机器有关,而是与那些不同的机器使用的输入有关。

一件简单的事情就是记录%0A,这样你就可以看到它工作时的含义以及当id没有时它是什么。当您记录它时,您可能希望用已知字符包装它,以便您可以看到换行符。例如,

client_id

如果fmt.Printf("|%s|", client_id) 包含换行符,则会记录类似

的内容
client_id

而不是

|1543358959292867
|

您还可以使用strings.TrimSpace删除任何前缀或后缀空格,包括换行符。

|1543358959292867|