【问题标题】:Google Contacts data API giving 500 ErrorGoogle 通讯录数据 API 给出 ​​500 错误
【发布时间】:2011-09-13 03:13:50
【问题描述】:

我正在使用 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);

这是我遇到麻烦的地方。 对于第一次回调,此请求访问令牌进程返回 Error 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 响应。但是,突然之间,出乎意料的是,它开始给我一个新的错误。

就在 curl 调用获取 access_token 之后,它向我显示 {"error":"invalid_grant"}。为什么会这样?

【问题讨论】:

    标签: oauth-2.0 google-api google-contacts-api


    【解决方案1】:

    如果您的$auth_code 已被使用,您将收到invalid_grant 错误。授权码只能使用一次。

    【讨论】:

      猜你喜欢
      • 2011-10-23
      • 1970-01-01
      • 1970-01-01
      • 2014-11-30
      • 2011-09-02
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多