gpt4 book ai didi

http - 使用 Google OAuth2.0 时出现错误请求

转载 作者:可可西里 更新时间:2023-11-01 16:06:26 30 4
gpt4 key购买 nike

我在 Salesforce 中使用 Google OAuth 时收到 400 错误请求。以下错误是关于无效的 grant_type,但如果您查看“使用刷新 token ”下的文档,您会发现它是正确的。

https://developers.google.com/identity/protocols/OAuth2WebServer

错误:

{
"error": "unsupported_grant_type",
"error_description": "Invalid grant_type: "
}

我正在尝试将 refresh_token 交换为访问 token ,并且可以使用 CURL 和以下代码成功完成此操作。

curl \
-d refresh_token=REFRESH_TOKEN \
-d client_id=CLIENT_ID \
-d client_secret=CLIENT_SECRET \
-d grant_type=refresh_token https://www.googleapis.com/oauth2/v4/token

我在 Salesforce 中使用的代码:

    Http http = new Http();
HttpRequest req = new HttpRequest();

req.setHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
req.setHeader('Content-Length', '0');
req.setHeader('client_id', 'CLIENT_ID');
req.setHeader('client_secret', 'CLIENT_SECRET');
req.setHeader('refresh_token', 'REFRESH_TOKEN');
req.setHeader('grant_type', 'refresh_token');

req.setEndpoint('https://www.googleapis.com/oauth2/v4/token');
req.setMethod('POST');

return http.send(req);

最佳答案

-d curl 选项使用 application/x-www-form-urlencoded 内容类型发送请求正文中的数据,这是受支持的方式之一在 OAuth2 中发送这些参数。

-d Sends the specified data in a POST request to the HTTP server, in the same way that a browser does when a user has filled in an HTML form and presses the submit button. This will cause curl to pass the data to the server using the content-type application/x-www-form-urlencoded.

在 Salesforce 代码中,您设置了正确的内容类型,但随后将 OAuth2 相关参数作为附加 header 发送,而不是在请求正文中发送。

您需要更新代码以使用 application/x-www-form-urlencoded 编码发送请求正文中的参数。

关于http - 使用 Google OAuth2.0 时出现错误请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40876323/

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