2015-03-31 3 views
0

Насколько я могу судить, следующие должен работы. Он вытащил из примера кода, и аналогичные запросы 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

Должна ли

этой работы? Я просто ничего не вижу?

Спасибо!

+0

«xyzxyz» - это идентификатор календаря, из которого вы хотите перечислить события? Предоставляли ли вы доменную делегацию (https://developers.google.com/drive/web/delegation) свою учетную запись службы, которая предоставляет доступ к данным пользователя? Кроме того, вы можете попробовать свой запрос в google API explorer https://developers.google.com/google-apps/calendar/v3/reference/events/list – SGC

+0

Да, «xyzxyz» - это идентификатор календаря (фактический, из конечно, разные). Да, я передал доменную службу на мою учетную запись службы. И мой запрос работает в API-обозревателе - жаль, что я не упомянул, что я тоже это пробовал - он даже использует идентичный URL-адрес для связи с Google, когда я смотрю за кулисами на моей странице. Я полностью смущен. – yodarunamok

+0

После того, как я снова посмотрел на [Документацию OAuth] (https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority), я подумал, что, возможно, мне нужно указать пользователя, который я выдавал себя так: '$ cred -> sub = '[email protected]'; ', но это не помогает. Есть идеи? – yodarunamok

ответ

0

После того, как я обнаружил, что я нашел this getting started guide. Я последовал за link in Step 1, part 1; но API-интерфейс Calendar уже был показан как включенный в консоли разработчика, поэтому я не уверен, что это что-то делало. Однако, я никогда не входил в Согласие экрана информация, как описано в шаге 1, часть 2, и когда я проверил свой код в этом пункте, без дальнейшей модификации он работал.

я оставил Согласие экрана информации пустым, потому что мое приложение использует только доступ общественности API, но это, кажется, что экран данные о согласии должен быть введен независимо от того, собираетесь ли вы использовать его или нет.

Смежные вопросы