Я пытаюсь прочитать канал из учетной записи Google Sites (приложения Google). Мне не нужно, чтобы мое приложение требовало от каждого пользователя входа в систему, поэтому я создал свой ClientID как «Учетную запись службы» в «консоли Google API». Я добавил этот идентификатор клиента и область действия (https://sites.google.com/feeds/) на страницу «Управление доступом к клиенту API» в панели управления приложениями Google.
Я подключаюсь, используя приведенный ниже код, все константы определены в моем коде с правильными значениями.
// api dependencies
require_once(GOOGLE_API_PATH);
// create client object and set app name
$client = new Google_Client();
$client->setApplicationName(GOOGLE_API_NAME);
// set assertion credentials
$client->setAssertionCredentials(
new Google_AssertionCredentials(
GOOGLE_API_EMAIL,
array(GOOGLE_API_SCOPE),
file_get_contents(GOOGLE_API_PK)
));
$client->setClientId(GOOGLE_API_CLIENTID);
// create service
$req = new Google_HttpRequest("https://sites.google.com/feeds/content/<herismydomainname.com>/intranet");
$val = $client->getIo()->authenticatedRequest($req);
// The contacts api only returns XML responses.
$response = json_encode($val->getResponseBody());
print "<pre>" . print_r(json_decode($response, true), true) . "</pre>";
Я получаю ответ: «Не авторизован для доступа к этому каналу». Когда я пытаюсь получить этот канал на игровой площадке OAuth2.0, входя в систему с помощью моей учетной записи приложений Google, я получаю ожидаемый ответ. Что я здесь упускаю?