FB交换令牌api抛出错误

我正在开发服务器上测试 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"))


jeck猫
浏览 138回答 1
1回答

呼啦一阵风

错误消息说您的 Basic Auth 用户名必须是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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go