Intereting Posts
PHP-статистика Объект хранится в памяти Параллельные обновления = потеря данных? Является ли это хорошим способом сопоставления URI с классом / методом в PHP для MVC PHP Неустранимая ошибка: Загрузчик должен появиться в качестве первой записи в php.ini Почему мой запрос с именованными параметрами возвращает пустой результат? Есть ли эквивалент для var_dump (PHP) в Javascript? Apache переписывается для Laravel / public Кто-нибудь знает о плагине проверки орфографии для ckeditor, который использует aspell или аналогичную локальную службу вместо spellchecker.net? Как обрабатывать ошибки доставки почты с помощью PHP Экспертные мнения по очень большому количеству столбцов в таблице mySQL? Stripe Payment: получение ошибки как клиент cus _ ***** не имеет связанной карты с ID tok _ ***** Групповой скрипт Сервер – неправильное время PHPUnit – классы автозагрузки в тестах Как назначить значение переменной javascript переменной php json_encode () выдает ошибку: «Неверная последовательность UTF-8 в аргументе»

Не удается получить токен доступа с Google Calendar Api v3

Я пытаюсь поместить событие календаря в календарь без приглашения на аутентификацию. Я прочитал, что использование учетной записи службы OAuth позволяет вам это делать. Я установил учетную запись службы в своей консоли разработчика Google, и мне не повезло с этим.

У нас есть учетная запись Google, и я устанавливаю свой делегированный пользователь администратору нашей учетной записи, чтобы они могли получить доступ к какому-либо календарю, но это не приведет к созданию события. Я считаю, что проблема связана с токеном доступа. Когда я var_dump($accessToken) он показывает NULL .

 <?php error_reporting(E_ALL); require_once 'Google/Client.php'; require_once 'Google/Service/Calendar.php'; session_start(); /* Authentication ID's */ const CLIENT_ID = '[MY CLIENT ID]'; const SERVICE_ACCOUNT_NAME = '[MY SERVICE ACCOUNT]'; const KEY_FILE = '[MY KEY FILE].p12'; const CALENDAR_SCOPE = "https://www.googleapis.com/auth/calendar"; $key = file_get_contents(KEY_FILE); $auth = new Google_Auth_AssertionCredentials( SERVICE_ACCOUNT_NAME, array(CALENDAR_SCOPE), $key ); $auth->sub = "adminaccount@email.com"; $client = new Google_Client(); $client->setScopes(array(CALENDAR_SCOPE)); $client->setAssertionCredentials($auth); $client->getAuth()->refreshTokenWithAssertion(); $accessToken = $client->getAccessToken(); $client->setClientId(CLIENT_ID); $user = "testaccount@email.com"; if($accessToken){ $cal = new Google_Service_Calendar($client); $event = new Google_Service_Calendar_Event(); $event->setSummary('TITLE'); $event->setLocation('World'); $event->setDescription('test'); $start = new Google_Service_Calendar_EventDateTime(); $start->setDate(date('yyyy-mm-dd')); $event->setStart($start); $end = new Google_Service_Calendar_EventDateTime(); $end->setDate(date('yyyy-mm-dd')); $event->setEnd($end); $cal->events->insert($user, $event); } ?> 

Я ссылаюсь на этот другой поток ( используя учетную запись службы, getAccessToken () возвращает null ), чтобы попытаться устранить эту проблему, но не повезло с ней.

Любая помощь будет принята с благодарностью!

Похоже, вам необходимо предоставить доступ к пользовательским данным домена Google Apps. Ссылка ниже в разделе «Делегировать полномочия домена на ваш аккаунт службы».

https://developers.google.com/drive/web/delegation

Вы можете попробовать установить auth следующим образом:

 $auth = new Google_Auth_AssertionCredentials( SERVICE_ACCOUNT_NAME, SCOPES, $key, 'notasecret', 'http://oauth.net/grant_type/jwt/1.0/bearer', ADMIN_USER );