Я использую аутентификацию 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«}.Почему это так?