Не удается подключиться к учетной записи службы Google через php и Google apiclient alpha 2.0.0

У меня проблема с подключением через Google Apiclient 2.0.0, как установлено через композитор.

Вот что я сделал до сих пор:

Я установил apiclient через композитор.

я пошел в https://console.cloud.google.com/apis/credentials?my-project и перейдите на страницу «Менеджер API»> «Учетные данные».

Я создал учетные данные для учетной записи службы и загрузил JSON. Затем я загрузил JSON на свой сервер.

Я включил Domain Wide Delegation для этой учетной записи, управляя своими учетными записями служб.

Я подтвердил свое доменное имя на вкладке «Проверка домена».

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

Затем я поделился своим календарем с адресом электронной почты учетной записи службы.

Сейчас я пытаюсь использовать API для подключения и сталкиваюсь с проблемами авторизации.

$json_file = '/path/to/service-account-credentials.json';
$scopes = [
Google_Service_Calendar::CALENDAR,
Google_Service_Calendar::CALENDAR_READONLY
];

// create a new client and authorize
$client = new Google_Client();

// set the basic information of the client
$client->setApplicationName("Apointments");
$client->setSubject( [email protected] );
$client->setAccessType('offline');

// load the json credential file
$client->setAuthConfig( $json_file );
$client->setScopes( $scopes );

// check to see if the token is stored in the session
if( isset( $_SESSION['service_token'] ) )
{
// token was stored, use it with the cilent
$client->setAccessToken( $_SESSION['service_token'] );
}

// test the authorization to see if it is expired
if( $client->isAccessTokenExpired() )
{
// Failed authorization, get a new token
$client->refreshTokenWithAssertion();
}
// store the token in the session
$_SESSION['service_token'] = $client->getAccessToken();

Из трассировки стека я определила строку кода, которая нарушает работу:

    $client->refreshTokenWithAssertion();

Что приводит к сообщению об ошибке:

Ответ клиента об ошибке [url] https://www.googleapis.com/oauth2/v4/token [код состояния] 401 [фраза причины] Несанкционированный

Есть мысли о том, где я ошибся?

Заранее спасибо,
Адам

0

Решение

То, как вы используете сервисную учетную запись, является действительным только для доступа к данным, связанным с вашим приложением или самой учетной записью службы. Так как вы хотите получить доступ Google Calendar данные, вы должны быть администратором домена Служб Google с правами доступа к любым данным пользователя вашего домена. Данные Календаря Google принадлежат пользователям, поэтому вам нужно указать, к какому пользователю вы пытаетесь получить доступ.

Вам нужно authenticate пользователю необходимо получить токен доступа и передать его. Если вы получаете токен доступа, вы можете вызвать информацию о токене, передавая токен доступа, чтобы получить больше информации о том, с кем связан пользователь.

Вот демонстрационное приложение Quick start, используйте его в качестве справочного материала: https://developers.google.com/+/web/samples/php

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]