2016-11-01 7 views
1

Я пытаюсь создать токен/refreshToken, чтобы мой сайт мог отправлять данные в Google Таблицы, не спрашивая у конечного пользователя разрешения, и я борюсь с этим за Несколько часов сейчас.PHP - Google Таблицы API OAuth2- не может получить токен

Я пробовал много разных кодов, которые я нашел в Интернете + документы Google, и я сделал некоторый прогресс, но я не могу заставить его работать, и я не могу понять, что мне не хватает.

на данный момент я не получаю ошибки (ни в моих журналах), но и я не получаю редирект или новое окно для авторизации приложения

<?php 
    session_start(); 

    require_once('php-google-oauth/Google_Client.php'); 
    include_once('lib/autoload.php'); 
    include_once('php-google-oauth/auth/Google_OAuth2.php'); 

    $CLIENT_ID = 'xxxxxxxxxxxx.apps.googleusercontent.com'; 
    $SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxx'; 
    $REDIRECT = 'http://mywebsite.com'; 
    $APIKEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; 
    // $KEY = file_get_contents('php-google-oauth/client_secret.json'); 

    $client = new Google_Client(); 
    $client->setApplicationName("Contacts to Google Sheets"); 
    $client->setClientId($CLIENT_ID); 
    $client->setClientSecret($SECRET); 
    $client->setRedirectUri($REDIRECT); 
    $client->setScopes(array('https://spreadsheets.google.com/feeds')); 
    $client->setAccessType('offline'); // Gets us our refresh token 

    // Step 1: The user has not authenticated so we give them a link to login 
    if (!$client->getAccessToken() && !isset($_SESSION['token'])) { 
     $authUrl = $client->createAuthUrl(); 
    } 

    // Step 2: The user accepted your access now you need to exchange it. 
    if (isset($_GET['code'])) { 
     $client->authenticate($_GET['code']); 
     $_SESSION['token'] = $client->getAccessToken(); 
     header('Location: ' . filter_var($REDIRECT, FILTER_SANITIZE_URL)); 
    } 

    // Step 3: We have access we can now create our service 
    if (isset($_SESSION['token'])) { 
     $client->setAccessToken($_SESSION['token']); 
     $token = $client->getAccessToken(); 
    } 

    echo '<script>console.log("TOKEN: '. $token .'");</script>'; 
?> 

Заранее благодарим!

+0

Попробуйте проверить это [Github] (https://github.com/google/google-api-php-client), если это может вам помочь. Это может послужить вам руководством, если вы правильно настроили свой код. Кроме того, убедитесь, что вы прочитали эту [документацию] (https://developers.google.com/sheets/guides/authorizing) об авторизации запроса в листе API. Другое дело, что вы должны включить API-интерфейсы в своей консоли разработчика для доступа к этому API. Для получения дополнительной информации проверьте этот [поток] (https://github.com/asimlqt/php-google-spreadsheet-client/issues/20). – KENdi

ответ

0

Я посмотрел на код и попытался this-

// Step 1: The user has not authenticated so we give them a link to login 
if (!$client->getAccessToken() && !isset($_SESSION['token'])) { 
    $authUrl = $client->createAuthUrl(); 
    echo '<a href="'. $authUrl . '">Click here</a>'; 
} 

и теперь я действительно получаю маркер обратно от Google

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