【问题标题】:FB exchange token api throwing errorFB 交换令牌 api 抛出错误
【发布时间】:2016-08-04 00:01:04
【问题描述】:

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

Oauth 表单 URL:

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

带代码的回调。

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"))

【问题讨论】:

    标签: facebook api rest go oauth-2.0


    【解决方案1】:

    错误消息说您的基本身份验证用户名必须是 1543358959292867,但您提供的 client_id 实际上是 1543358959292867\n %0A)。

    我认为问题不一定与使用不同的机器有关,而是与这些不同机器使用的输入有关。

    一个简单的事情就是记录client_id,这样你就可以看到它在工作时是什么,在id 不工作时是什么。当你记录它时,你可能想用一个已知的字符包装它,这样你就可以看到换行符。例如,

    fmt.Printf("|%s|", client_id)
    

    如果client_id 包含换行符,则将记录类似

    |1543358959292867
    |
    

    而不是

    |1543358959292867|
    

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

    client_id = strings.TrimSpace(client_id)
    

    【讨论】:

    • 谢谢!我正在使用修剪空间设置我的环境变量,所以它看起来像这样。 os.Setenv("fbSecret", strings.TrimSpace(string(fbSecret))) 现在可以正常工作了。
    猜你喜欢
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 2020-10-12
    • 2022-12-15
    • 2021-11-19
    • 2018-09-05
    相关资源
    最近更新 更多