gpt4 book ai didi

php - Google OAuth2 错误 - 缺少必需参数 : grant_type on refresh

转载 作者:可可西里 更新时间:2023-11-01 00:43:38 25 4
gpt4 key购买 nike

我已经使用 Google 日历 API 构建了一个原型(prototype)日历同步系统,它运行良好,除了刷新访问 token 。这些是我完成的步骤:

1) 授权我的 API 并收到授权码。

2) 交换了访问 token 和 RefreshToken 的授权代码。

3) 在访问 token 过期之前使用日历 API。

此时我尝试使用刷新 token 获取另一个访问 token ,因此我的用户不必继续授予访问权限,因为日记同步发生在他们离线时。

这是 PHP 代码,我在整个系统中使用 curl 请求。

$requestURL = "https://accounts.google.com/o/oauth2/token";
$postData = array("grant_type" => "refresh_token",
"client_id" => $clientID,
"client_secret" => $clientSecret,
"refresh_token" => $refreshToken);

$headers[0] = 'Content-Type: application/json';

$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, $requestURL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));

$response = curl_exec($ch);
$responseArray = json_decode($response, TRUE);

我得到的响应是:

[error] => invalid_request
[error_description] => Required parameter is missing: grant_type

没有报告 curl 错误。

我试过 header 内容类型:application/x-www-form-urlencoded 和许多其他东西,结果相同。

我怀疑这在我的 curl 设置或 header 中很明显,因为已设置 Google 文档中针对此请求提到的每个参数。但是,我在兜圈子,所以非常感谢任何帮助,包括指出我忽略的任何明显错误。

最佳答案

您的请求不应发布 JSON 数据,而应查询表单编码数据,如:

$requestURL = "https://accounts.google.com/o/oauth2/token";
$postData = "grant_type=refresh_token&client_id=$clientID&client_secret=$clientSecret&refresh_token=$refreshToken";

$headers[0] = 'Content-Type: application/x-www-form-urlencoded';

$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, $requestURL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);

$response = curl_exec($ch);
$responseArray = json_decode($response, TRUE);

关于php - Google OAuth2 错误 - 缺少必需参数 : grant_type on refresh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26960087/

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