Я создаю серверное приложение, которое должно проходить аутентификацию с помощью Google Spreadsheets API и считывать данные из него. Используя это PHP-клиент с Клиент API Google.
Что мне нужно сделать, это пройти аутентификацию в Google без участия пользователя.
Установил все с композитор и загружен с autoloader.php.
Проблема у меня в том, эта секция документации, $accessToken
используется переменная, которую я не могу сгенерировать. Я создал проект в консоли разработчиков Google и учетные данные oAuth 2.0 с идентификатором клиента учетной записи службы. В результате я получил два файла — JSON and p12
наряду с CLIENT ID
, EMAIL ADDRESS
а также PUBLIC KEY FINGERPRINTS
учетные данные, которые я не знаю, как использовать для получения токена авторизации.
Кроме того, я сталкиваюсь с redirect_uri_mismatch
ошибка, и я не могу настроить его в консоли разработчиков Google.
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.
Я надеюсь, что это поможет кому-то в подобной ситуации.
Других решений пока нет …