gpt4 book ai didi

api - Google API token 端点 POST 返回错误请求 400

转载 作者:行者123 更新时间:2023-12-04 15:10:30 26 4
gpt4 key购买 nike

我正在尝试将一次性 Google Plus 授权代码交换为访问 token 。但我不断收到 400 Bad Request。我正在使用 VB.NET。这是代码:

        'We should now have a "good" one-time authorization code stored in "code"
Using Client As New WebClient()
'Dim Client As New WebClient()
Dim values As New NameValueCollection()
Dim Resp
Dim responseString As String

values("code") = Request.QueryString("code")
values("client_id") = ConfigurationManager.AppSettings("google.clientid")
values("client_secret") = ConfigurationManager.AppSettings("google.clientsecret")
values("grant_type") = "authorization_code"
values("redirect_uri") = "http://localhost:3333/MyVacations/default.aspx"
Resp = Client.UploadValues("https://www.googleapis.com/oauth2/v3/token", values)
responseString = Encoding.Default.GetString(Resp)
End Using

我很确定这是我应该使用的端点 https://www.googleapis.com/oauth2/v3/token但谁知道呢? Google Discovery Document只是为我混淆了这一点。

还请原谅我的天真,但有人会解释谷歌用作示例的 POST 代码如何与我上面代码中的 Web 请求相关联吗?我想我理解这些值是如何转换的,但是 POST 中的 3 个标题行(下面)......这是如何在 VB 代码中指定的?我遗漏了一些对其他人来说非常明显的东西,所以如果你知道,请告诉我。
POST /oauth2/v3/token HTTP/1.1
Host: www.googleapis.com
Content-Type: application/x-www-form-urlencoded

code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7&
client_id=8819981768.apps.googleusercontent.com&
client_secret={client_secret}&
redirect_uri=https://oauth2-login-demo.appspot.com/code&
grant_type=authorization_code

另一个 Stack Overflow Post说一些关于将数据作为查询参数发送(使用'&'我猜)而不是将数据作为请求 header 发送,那么沿着 NameValueCollection 发送有什么问题吗?

最佳答案

所以这就是答案:API 需要 2 次调用。第一次调用返回一个一次性授权码。第一个调用必须指定重定向 URI。

第二次调用将一次性代码发送到 API 以获得授权 token 。此 POST 还需要重定向 URI。

第一次调用中的重定向 URI 必须与第二次调用中的重定向 URI 相同!!!

我无法在文档中的任何地方找到它。请记住,此 URI 还必须与您的开发人员控制台中列表中的 URI 之一匹配,这就是所有文档中所说的。

关于api - Google API token 端点 POST 返回错误请求 400,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28797800/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com