Как решить проблему аутентификации в электронных таблицах Google oAuth 2.0?

0

Я создаю серверное приложение, которое необходимо будет аутентифицировать с помощью API Google Spreadsheets и читать данные из него. Использование этого PHP-клиента с клиентом API Google.

Мне нужно сделать аутентификацию с помощью Google без взаимодействия с пользователем.

Устанавливается все с помощью композитора и загружается с помощью autoloader.php.

Проблема, с которой я столкнулась, заключается в том, что в этом разделе документации используется переменная $accessToken которую я не могу сгенерировать. Я создал проект в Google Developers Console и учетные данные oAuth 2.0 с идентификатором клиента учетной записи службы. В результате у меня есть два файла - JSON and p12, а также CLIENT ID, EMAIL ADDRESS и PUBLIC KEY FINGERPRINTS, которые я не знаю, как использовать для получения токена авторизации.

Кроме того, я столкнулся с ошибкой redirect_uri_mismatch и я не могу настроить ее в Google Developers Console.

Метод authenticate в OAuth2.php требует переменную $code которой у меня нет, и не знаю, как ее получить.

Если бы я мог получить эту переменную $accessToken, я мог бы попытаться отладить ее дальше.

Любая помощь высоко ценится.

Теги:
authentication
google-spreadsheet
token
oauth

1 ответ

0
Лучший ответ

Это то, что сработало для меня:

$client = new Google_Client();
$client->setApplicationName(GOOGLE_APPLICATION_NAME);
$client->setClientId(GOOGLE_CLIENT_ID);

$key = file_get_contents(GOOGLE_KEY_FILE);
$cred = new Google_Auth_AssertionCredentials(
    GOOGLE_CLIENT_EMAIL,
    array(GOOGLE_SPREADSHEETS_URL),
    $key
);

$client->setAssertionCredentials($cred);

if($client->getAuth()->isAccessTokenExpired()) {
    $client->getAuth()->refreshTokenWithAssertion($cred);
}

$service_token = json_decode($client->getAccessToken());
$accessToken = $service_token->access_token;

use Google\Spreadsheet\DefaultServiceRequest;
use Google\Spreadsheet\ServiceRequestFactory;

$serviceRequest = new DefaultServiceRequest($accessToken);
ServiceRequestFactory::setInstance($serviceRequest);

$spreadsheetService = new Google\Spreadsheet\SpreadsheetService();
$spreadsheetFeed = $spreadsheetService->getSpreadsheets();

GOOGLE_SPREADSHEETS_URL - https://spreadsheets.google.com/feeds, а GOOGLE_KEY_FILE - это местоположение вашего файла XXX.p12.

Надеюсь, это поможет кому-то в подобной ситуации.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню