google play获取refresh_token报错grant_type

发布于 2022-09-01 13:02:40 字数 1177 浏览 21 评论 0

代码如下(code、client_id、client_secret、redirect_uri都是正确的参数,下面只是代写):
$url = 'https://accounts.google.com/o/oauth2/token';
$data = array(
'grant_type'=>'authorization_code',
'code'=>'aaaa',
'client_id'=>'bbbb',
'client_secret'=>'cccc',
'redirect_uri'=>'http://dddd/callback.php'
);
$header = array("Content-Type:application/x-www-form-urlencoded;charset=UTF-8");
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
var_dump($result);
curl_close($ch);

打印出的result:
string(102) "{
"error" : "invalid_request",
"error_description" : "Required parameter is missing: grant_type"
}"

在网上已经查找很多资料,如header改为"Content-Type:application/x-www-form-urlencoded,要改为post方式,请求参数放在body里,但是仍然报错,求高人指点!!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

流年里的时光 2022-09-08 13:02:40
$post_data = array(
    'grant_type' => 'refresh_token',
    'refresh_token' => $refreshToken,
    'client_id' => $gid,
    'client_secret' => $gkey
);
$postdata = http_build_query($post_data);
$options = array(
    'http' => array(
        'method' => 'POST',
        'header' => 'Content-type:application/x-www-form-urlencoded',
        'content' => $postdata,
        'timeout' => 15 * 60 // 超时时间(单位:s)
    )
);
$context = stream_context_create($options);
$result = file_get_contents("https://accounts.google.com/o/oauth2/token", false, $context);

试试这种方法。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文