API Календаря Google возвращается неавторизованным, даже если домен правильно зарегистрирован - PullRequest
1 голос
/ 05 февраля 2020

Я использую клиентскую библиотеку google php, чтобы создать веб-крючок для моего домена, но API продолжает возвращаться неавторизованным.

Я успешно выполнил шаги по "регистрации вашего домена" в pu sh, и мой домен указан в консоли API.

В разделе «API и сервисы»> «Проверка домена» он отображает мой домен в «разрешенных доменах».

все еще говорит мне, что домен не авторизован:

Функция библиотеки

$channel = new Google_Service_Calendar_Channel();
$channel->setId($channelId);
$channel->setType("web_hook");
$channel->setAddress("https://example.com/notifications");
$service->events->watch($calendarId, $channel);

Сообщение об ошибке

{ "error":
  { "errors": [{
    "domain": "global",
    "reason": "push.webhookUrlUnauthorized", 
    "message": "Unauthorized WebHook callback channel: https://example.com/notifications"
    }],
  "code": 401,
  "message": "Unauthorized WebHook callback channel: https://example.com/notifications"
  }
}

1 Ответ

0 голосов
/ 05 февраля 2020

Google_Service_Calendar_Channel требует, чтобы вы отправили клиента для его аутентификации. Лично я бы использовал сервисный аккаунт.

function getServiceAccountClient() {
    try {   
        // Create and configure a new client object.        
        $client = new Google_Client();
        $client->useApplicationDefaultCredentials();
        $client->addScope('https://www.googleapis.com/auth/calendar');
        return $client;
    } catch (Exception $e) {
        print "An error occurred: " . $e->getMessage();
    }
}

$client = getServiceAccountClient();
$channel = new Google_Service_Calendar_Channel($client);
$channel->setId($channelId);
$channel->setType("web_hook");
$channel->setAddress("https://example.com/notifications");
$service->events->watch($calendarId, $channel);
...