API данных Google Контактов дает 500 Ошибка - PullRequest
1 голос
/ 13 сентября 2011

Я использую аутентификацию 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-ответ.Но внезапно из блюза он начал выдавать мне новую ошибку.

Сразу после вызова curl, чтобы получить access_token , он показывает мне {"error": "invalid_grant«}.Почему это так?

1 Ответ

0 голосов
/ 12 мая 2012

Вы получите ошибку invalid_grant, если ваш $auth_code уже использовался. Коды авторизации можно использовать только один раз.

...