Я пытаюсь использовать google-api-client в PHP для проекта. я получил «доступ запрещен» ответ в то время как в этом заявлении:refreshTokenWithAssertion Permission Denied
$client->getAuth()->refreshTokenWithAssertion();
Google_IO_Exception, сообщение: Не удалось подключиться к 74.125.193.84: Отказано в Файл: /home/www/blah.com/restful /libs/Google/IO/Curl.php Строка: 81 /home/www/blah.com/restful/libs/Google/IO/Abstract.php(125): Google_IO_Curl-> executeRequest (объект (Google_Http_Request))
# 1 /home/www/blah.com/restful/libs/Google/Auth/OAuth2.php(326): Google_IO_Abstract-> makeRequest (объект (Google_Http_Request))
# 2 /home/www/blah.com/restful/libs/Google/Auth/OAuth2.php(306): Google_Auth_OAuth2-> refreshTokenRequest (Array)
# 3/дома/WWW/л. ком/успокоительное/v2/index.php (122): Google_Auth_OAuth2-> refreshTokenWithAssertion()
Я проверил все мои документы, и они выглядят правильно, что может быть проблема?
Спасибо, Джон
код:
$client_id = '1234blahblahblah.apps.googleusercontent.com'; //Client ID
$service_account_name = '[email protected]'; //Email Address
$key_file_location = 'blahblah-1234.p12'; //key.p12
$client = new Google_Client();
$client->setApplicationName("test");
$service = new Google_Service_Calendar($client);
if (isset($_SESSION['service_token'])) {
$client->setAccessToken($_SESSION['service_token']);
}
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
$service_account_name,
array('https://www.googleapis.com/auth/calendar'),
$key
);
print_r($cred);
$client->setAssertionCredentials($cred);
$client->setClientId($client_id);
if($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion(); //<<<<<failed here.
}
$_SESSION['service_token'] = $client->getAccessToken();
echo $_SESSION['service_token'];
}
этот код находится в другом файле .php. Я использовал chrom's restful client для тестирования .php, который, в свою очередь, вызывает google api, как указано выше, является ли это правильным способом его протестировать? – john
Он должен быть синхронизирован с NTP. Прочитайте комментарии http://stackoverflow.com/questions/25376791/fatal-error-uncaught-exception-google-auth-exception-with-message-error-refr#comment39574276_25376949 –
Метод Google_Client # loadServiceAccountJson ($ jsonLocation, $ области) можно использовать для создания объекта Google_Auth_AssertionCredentials. Этот метод не упоминается в текущей документации.Он может напрямую обрабатывать JSON-файл со всеми необходимыми данными, такими как закрытый ключ. [Документация по API для проверки подлинности] (https://developers.google.com/api-client-library/php/auth/service-accounts) –