2012-06-11 2 views
1

Я пытаюсь использовать google analytics api для своей учетной записи. Поэтому сначала я разрешаю доступ к приложению с токеном обновления. Покупайте, когда я пытаюсь обновить токен, я получаю ошибку «Invalid Grant». Попробовал обновить как с помощью php-клиентской библиотеки, так и вручную с помощью curl.Google refresh token получает недопустимую ошибку разрешения

это вручную с завитком:

$oauth2token_url = "https://accounts.google.com/o/oauth2/token"; 
    $clienttoken_post = array(
    "client_id" => 'xxxxxxxx-d28qutrse5bvaf7n4a37qgs5ieijvp9n.apps.googleusercontent.com', 
    "client_secret" => 'xxxxxxxxxxxxx'); 

     $clienttoken_post["refresh_token"] = $refresh_token; 
     $clienttoken_post["grant_type"] = "refresh_token"; 

    $curl = curl_init($oauth2token_url); 

    curl_setopt($curl, CURLOPT_POST, true); 
    curl_setopt($curl, CURLOPT_POSTFIELDS, $clienttoken_post); 
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 

    $json_response = curl_exec($curl); 
    curl_close($curl); 

    $authObj = json_decode($json_response); 

    print_r($authObj); 


    exit(); 

маркер обновления я получил с предыдущим вызовом, используя simple.php примера:

require_once '../../src/apiClient.php'; 
require_once '../../src/contrib/apiAnalyticsService.php'; 
session_start(); 

$client = new apiClient(); 
$client->setApplicationName("Google Analytics PHP Starter Application"); 

// Visit https://code.google.com/apis/console?api=analytics to generate your 
// client id, client secret, and to register your redirect uri. 
$client->setClientId('xxxxxxxxx-d28qutrse5bvaf7n4a37qgs5ieijvp9n.apps.googleusercontent.com'); 
$client->setClientSecret('xxxxxx'); 
$client->setRedirectUri('https://www.xxxxxxxxxx.org/oauth2callback/google-api-php-client/examples/analytics/simple.php'); 
$client->setDeveloperKey('xxxxxxx'); 



if (isset($_GET['logout'])) { 
    unset($_SESSION['token']); 
} 

if (isset($_GET['code'])) { 
    $client->authenticate(); 
    $_SESSION['token'] = $client->getAccessToken(); 
    header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']); 
} 

if (isset($_SESSION['token'])) { 
// echo $_SESSION['token']; 
    $client->setAccessToken($_SESSION['token']); 
} 
echo $client->getAccessToken() 

ответ

5

если кто заинтересован я, наконец, решил ее после того, как несколько часов:

Я пошел на площадку oauth: https://code.google.com/oauthplayground справа, есть кнопка настроек. «Использовать собственные учетные данные OAuth». взял токен обновления, и он работает без проблем.

1

Если кто-то бежит в эту проблему ...

У нас была проблема, когда тот же самый запрос пост не будет работать изначально, но работать в дальнейшем.

Для нас это выглядело так, что google был очень разборчивым в течение времени iat - попробуйте вычесть 5 минут от него.

Смежные вопросы