在检索API调用的令牌时遇到问题。这是我的代码
$authUrl = "https://accounts.google.com/o/oauth2/token";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $authUrl);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, array(
'code' => $code,
'client_id' => CLIENT_ID,
'client_secret' => CLIENT_SECRET,
'redirect_uri' => $redirectURL,
'grant_type' => 'authorization_code'
));
$http_data = curl_exec($curl);
curl_close($curl);
var_dump($http_data);
$ http_data表示无效请求。
我的任务是在我的Gmail帐户中收到所有电子邮件,我认为我需要访问令牌。请指教。
提前完成。
答案 0 :(得分:0)
首先,您似乎将所有参数作为HTTP GET字符串的一部分添加,这是 HTTP POST 调用。此外,您似乎忘记包含从身份验证流程的第一部分获得的代码。
即验证码,它用于请求刷新 令牌。它也会在html的正文中显示给用户 如在页面标题中。要获得刷新令牌,请进行POST 验证码返回给Google。注意:这是一个你不能发布的HTTP帖子 只需将其放在一个HTTP Get的浏览器中即可。注意: grant_type = authorization_code
https://accounts.google.com/o/oauth2/token
code={Your code from the first part of flow}&client_id={ClientId}.apps.googleusercontent.com&client_secret={ClientSecret}&redirect_uri=urn:ietf:wg:oauth:2.0:oob&grant_type=authorization_code
注意您是否考虑使用Google APIs PHP Client library来处理所有这些问题?
从Google 3 legged Oauth2 flow文章中删除了代码。