Насколько я могу судить, следующие должен работы. Он вытащил из примера кода, и аналогичные запросы like this one решены в порядке. Да, области настроены; и да, рассматриваемый календарь специально используется. Вот код - вы заметите, что я просто пытаюсь получить вещи, чтобы работать в этой точке, но данные об ошибке не очень полезно:Почему эта попытка вывести список событий всегда возвращает ошибку 404?
error_reporting(E_ALL);
session_start();
require_once 'google_settings.php';
require_once 'google-api-php-client/autoload.php';
$client_id = GA_CLIENT_ID; //Client ID
$service_account_name = GA_SERVICE_EMAIL; //Email Address
$key_file_location = GA_KEY_FILE_LOCATION; //key.p12
if ($client_id == '<YOUR_CLIENT_ID>' || !strlen($service_account_name) || !strlen($key_file_location)) {
echo missingServiceAccountDetailsWarning();
}
try {
$client = new Google_Client();
$client->setApplicationName("Just Testing");
$client->setDeveloperKey(GA_API_KEY);
$service = new Google_Service_Calendar($client);
if (isset($_SESSION['service_token'])) {
$client->setAccessToken($_SESSION['service_token']);
}
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
$service_account_name,
array('https://www.googleapis.com/auth/calendar'),
$key
);
$client->setAssertionCredentials($cred);
if ($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($cred);
}
$_SESSION['service_token'] = $client->getAccessToken();
$optParams = array();
$results = $service->events->listEvents('xyzxyz', $optParams);
echo "<h3>Results Of Call:</h3>\n<pre>";
if (is_array($results)) {
foreach ($results as $item) {
var_dump($item);
echo "\n\n";
}
} else var_dump($results);
echo "\n</pre>";
}
catch (Exception $e) {
echo $e->getMessage();
}
ошибка я всегда получаю выглядит следующим образом (независимо от того, какого теста календаря я использую - да я включен общий доступ по отдельности):
Error calling GET https://www.googleapis.com/calendar/v3/calendars/xyzxyz?key=<key_appears_here>: (404) Not Found
этой работы? Я просто ничего не вижу?
Спасибо!
«xyzxyz» - это идентификатор календаря, из которого вы хотите перечислить события? Предоставляли ли вы доменную делегацию (https://developers.google.com/drive/web/delegation) свою учетную запись службы, которая предоставляет доступ к данным пользователя? Кроме того, вы можете попробовать свой запрос в google API explorer https://developers.google.com/google-apps/calendar/v3/reference/events/list – SGC
Да, «xyzxyz» - это идентификатор календаря (фактический, из конечно, разные). Да, я передал доменную службу на мою учетную запись службы. И мой запрос работает в API-обозревателе - жаль, что я не упомянул, что я тоже это пробовал - он даже использует идентичный URL-адрес для связи с Google, когда я смотрю за кулисами на моей странице. Я полностью смущен. – yodarunamok
После того, как я снова посмотрел на [Документацию OAuth] (https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority), я подумал, что, возможно, мне нужно указать пользователя, который я выдавал себя так: '$ cred -> sub = '[email protected]'; ', но это не помогает. Есть идеи? – yodarunamok