API Календаря Google – PHPPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 API Календаря Google – PHP

Сообщение Anonymous »

В настоящее время я использую API Календаря Google для веб-приложения. Однако каждый час мне предлагается ссылка для подтверждения быстрого доступа.
Подробнее:
  • Я создали новый идентификатор Gmail: redu@gmail.com
  • redu@gmail.com имеет связанный календарь
  • Моему веб-приложению на основе PHP необходимо сделайте с календарем следующее:
  • Создайте новый календарь для каждого зарегистрированного пользователя (как дополнительный календарь для redu@gmail.com)
    < li>Создайте событие для вошедшего в систему пользователя и добавьте другого зарегистрированного пользователя в качестве приглашенного.
Я безуспешно пытался использовать OAUTH и сервисные учетные записи.
Ниже приведен код, который создает объекты Google_Client и Service с использованием учетных данных сервисной учетной записи.
function __construct()
{
Service account based client creation.
$this->client = new Google_Client();
$this->client->setApplicationName("Redu");
$this->client->setAuthConfig(CREDENTIALS_PATH);
$this->client->setScopes([SCOPES]);
$this->client->setSubject('redu@gmail.com');
$this->client->setAccessType('offline');

$this->service = new Google_Service_Calendar($this->client);
}


Когда я пытаюсь использовать объект $service для создания календаря или события, я получаю сообщение об ошибке, сообщающее, что разрешения на уровне домена не настроены. Однако, когда я создал учетную запись службы, я включил делегирование на уровне домена.
Ниже приведен мой код для создания Google_Client с использованием ключа учетной записи службы и использования клиента для создания нового календаря для redu. @gmail.com. Обратите внимание, что я поделился календарем redu@gmail.com с reduservice@subtle-breaker-280602.iam.gserviceaccount.com и установил разрешение «Управление изменениями и управление общим доступом». Ошибка, которую я получаю, находится под кодом:
require (__DIR__.'/../../../vendor/autoload.php');
define('CREDENTIALS_PATH', __DIR__ . '/redu_service_account_credentials.json');
define('SCOPES', Google_Service_Calendar::CALENDAR);

function createNewCalendar($userName) {
//Service account based client creation.
$client = new Google_Client();
$client->setApplicationName("REdu");
// path to the credentials file obtained upon creating key for service account
$client->setAuthConfig(CREDENTIALS_PATH);
$client->setScopes([SCOPES]);
$client->setSubject('redu@gmail.com');
$client->setAccessType('offline');

$service = new Google_Service_Calendar($client);

$calendar = new Google_Service_Calendar_Calendar();
$calendar->setSummary($userName);
$calendar->setTimeZone('America/Los_Angeles');

$createdCalendar = $service->calendars->insert($calendar);

// Make the newly created calendar public
$rule = new Google_Service_Calendar_AclRule();
$scope = new Google_Service_Calendar_AclRuleScope();

$scope->setType("default");
$scope->setValue("");
$rule->setScope($scope);
$rule->setRole("reader");

// Make the calendar public
$createdRule = $service->acl->insert($createdCalendar->getId(), $rule);
return $createdCalendar->getId();
}

ОШИБКА:
Fatal error: Uncaught exception 'Google_Service_Exception' with message '{
"error": "unauthorized_client",
"error_description": "Client is unauthorized to retrieve access tokens using this method, or client not authorized for any of the scopes requested."
}'


Подробнее здесь: https://stackoverflow.com/questions/624 ... ar-api-php
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»