Я создаю серверное приложение, которое необходимо будет аутентифицировать с помощью 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
, я мог бы попытаться отладить ее дальше.
Любая помощь высоко ценится.
Это то, что сработало для меня:
$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.
Надеюсь, это поможет кому-то в подобной ситуации.