我正在使用OAUTH2身份验证来导入GMAIL联系人。在我的代码中,我将配置参数存储在一个数组中:
$clientid=<my Client id>;
$clientsecret=<my client secret>;
$redirecturi=<my redirect URL>;
$max_results = 25;
以下是我创建POST数组的方法:
$fields=array(
'code'=> urlencode($auth_code),
'client_id'=> urlencode($clientid),
'client_secret'=> urlencode($clientsecret),
'redirect_uri'=> urlencode($redirecturi),
'grant_type'=> urlencode('authorization_code')
);
$post = '';
foreach($fields as $key=>$value) { $post .= $key.'='.$value.'&'; }
$post = rtrim($post,'&');
现在我正在进行 CURL 调用以获取访问令牌:
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,'https://accounts.google.com/o/oauth2/token');
curl_setopt($curl,CURLOPT_POST,5);
curl_setopt($curl,CURLOPT_POSTFIELDS,$post);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,0);
$result = curl_exec($curl);
curl_close($curl);
$response = json_decode($result);
$accesstoken = $response->access_token;
log_message('debug','POST'.$post);
log_message('debug','contents'.$result);
这是我遇到麻烦的地方。 对于第一次回调,此请求访问令牌进程会返回错误500 响应,该响应显示在我的日志中,如下所示:
<HTML>
<HEAD>
<TITLE>Error processing OAuth 2 request</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Error processing OAuth 2 request</H1>
<H2>Error 500</H2>
</BODY>
</HTML>
但是对于所有后续回调,我获得了正确的访问令牌。
第一次出了什么问题?
更新我以某种方式重置了我的客户机密码,有一段时间,我得到了正确的XML响应。但是,突然之间,突然之间,它开始给我一个新的错误。
在收到 access_token 的卷曲调用之后,它会显示{{error“:”invalid_grant“}。为什么会这样?
答案 0 :(得分:0)
如果您的invalid_grant
已被使用,则会出现$auth_code
错误。授权码只能使用一次。