Вопрос по google-calendar-api, php, google-api – Доступ к событиям календаря Google из учетной записи службы: {«error»: «access_denied»}. Нет приложений Google

2

Я хотел бы получить доступ к календарю Google, используя учетную запись службы. Это мой код: заменить на правильное значение взять на консоли Google API.

setClientId(CLIENT_ID);
$client->setApplicationName("");

$key = file_get_contents(KEY_FILE);
$client->setAssertionCredentials(new Google_AssertionCredentials(
    SERVICE_ACCOUNT_NAME,
    array('https://www.googleapis.com/auth/calendar'),
    $key,
    'notasecret',
    'http://oauth.net/grant_type/jwt/1.0/bearer',
    MY_EMAIL)
);

$cal = new Google_CalendarService($client);
$calList = $cal->calendarList->listCalendarList();

print "Calendar List<pre>" . print_r($calList, true) . "</pre>";

Когда я выполняю свой код, я получаю:

Неустранимая ошибка: необработанное исключениеGoogle_AuthException» с сообщениемОшибка обновления токена OAuth2, сообщение: '{"ошибка" : "доступ закрыт" }'' в /home/www/65683f67e3f0d94b14bba3c945014cda/web/intranet/googleapi/auth/Google_OAuth2.php:279 трассировку стека: # 0 /home/www/65683f67e3f0d94b14int_b/3/guth_Au/auth_Auth_Auth_Auth_Auth_Ag_A_A_O_A_A_A_A_A_A_W_A_A_A_A_WT >refreshTokenRequest (Array) # 1 /home/www/65683f67e3f0d94b14bba3c945014cda/web/intranet/googleapi/auth/Google_OAuth2.php(209): Google_OAuth2->refreshTokenWithAssertion () # 2 /home/www/65683f67e3f0d94b14bba3c945014cda/web/intranet/googleapi/service/Google_ServiceResource.php(166): Google_OAuth2->sign (Object (Google_HttpRequest)) # 3 /home/www/65683f67e3f0d94b14bba3c945014cda/web/intranet/googleapi/contrib/Google_CalendarService.php(154): Google_ServiceResource->__вызов('список', Array) # 4 /home/www/65683f67e3f0d94b14bba3c945014cda/web/intranet/testService.php(32): Google_CalendarListServiceResource->listCalendarList () # 5 {main} добавляется в /home/www/65683f67e3f0d94b14bba3c945014cda/web/intranet/googleapi/auth/Google_OAuth2.php в строке 279

Если я изменю свой код с помощью:

$client->setAssertionCredentials(new Google_AssertionCredentials(
SERVICE_ACCOUNT_NAME,
array('https://www.googleapis.com/auth/calendar'),
$key));

Я получил:

(403) Доступ не настроен

Что здесь не так?

хорошо, у меня есть решение, но извините, я должен подождать 2 часа, чтобы опубликовать его (правила stackoverflow);) Fabien

Ваш Ответ

1   ответ
3

$client->setAssertionCredentials(new Google_AssertionCredentials(
      SERVICE_ACCOUNT_NAME,
      array('https://www.googleapis.com/auth/calendar'),
      $key));

Проблема не в коде, а в моей учетной записи Google, я упомянул Referer в консоли Google API. После стирания поля код работает.

В информационных целях, если вы хотите получить доступ к общим календарям, не забудьте поделиться своим календарем с вашим [email protected] (вашим SERVICE_ACCOUNT_NAME).

Для получения дополнительной информации см .:

https://groups.google.com/forum/?fromgroups=#!topic/google-ajax-search-api/kaKYuUstwB0/discussion

Спасибо, я боролся с этим какое-то время ... Не знал, что мне нужно было предоставить доступ к своему календарю, добавив в него учетную запись разработчика. Maarten00

Похожие вопросы