使用PHP curl的Gmail API访问令牌

时间:2017-01-09 07:08:38

标签: php curl google-api google-oauth gmail-api

在检索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帐户中收到所有电子邮件,我认为我需要访问令牌。请指教。

提前完成。

1 个答案:

答案 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文章中删除了代码。