1

このグループ、その他のグループ、および他の Web サイトを検索しましたが、解決策が見つかりません。エラー出力は以下です。setAccessToken を NULL にしないでください。ここでのガイダンスは素晴らしいでしょう。Google カレンダー v3 API のドキュメントはあまり優れていません。実際、サンプルは古い API バージョン用です。

PHP 致命的なエラー: google-api-php-client/src/auth/Google_OAuth2.php:162 スタック トレースで、メッセージ「トークンを json でデコードできませんでした」という例外「Google_AuthException」がキャッチされませんでした:

0 google-api-php-client/src/Google_Client.php(170): Google_OAuth2->setAccessToken(NULL)

1 Cal.php(16): Google_Client->setAccessToken(true)

2 {main} が google-api-php-client/src/auth/Google_OAuth2.php の 162 行目でスローされる

以下は私のアプリのコードです:

<?php
require_once 'google-api-php-client/src/Google_Client.php';
require_once 'google-api-php-client/src/contrib/Google_CalendarService.php';
session_start();
$client = new Google_Client();
$service = new Google_CalendarService($client);
if (isset($_REQUEST['logout'])) {
  unset($_SESSION['token']);
}
if (isset($_SESSION['token'])) {
  $client->setAccessToken($_SESSION['token']);
} else {
  $client->setAccessToken($client->authenticate($_GET['code']));
  $_SESSION['token'] = $client->getAccessToken();
}
if (isset($_SESSION['token'])) {
  $client->setAccessToken($_SESSION['token']);
}
if ($client->getAccessToken()) { 
$event = new Google_Event();
$event->setSummary('Appointment');
$event->setLocation('Somewhere');
$start = new Google_EventDateTime();
$start->setDateTime('2013-10-05T10:00:00.000-07:00');
$event->setStart($start);
$end = new Google_EventDateTime();
$end->setDateTime('2013-10-05T10:25:00.000-07:00');
$event->setEnd($end);
$attendee1 = new Google_EventAttendee();
$attendee1->setEmail('my@email.com');
// ...
$attendees = array($attendee1);
$event->attendees = $attendees;
$createdEvent = $service->events->insert('primary', $event);
echo $createdEvent->getId();
} else {
echo "failed hard";
}
?>

ClientID、Key などは google-api-php-client/src/config.php ファイルに保持されます

4

1 に答える 1

0

しばらくAPIドキュメントを確認していませんでしたが、次のようなものを使用してクライアントを構成しています。多分それは助けになるでしょう。

$certFile = file_get_contents('/path/to/cert.p12');

$client = new Google_Client();
$client->setApplicationName('My App');
$client->setClientId($clientId);
$client->setScopes([
    'https://www.googleapis.com/auth/calendar',
    'https://www.googleapis.com/auth/calendar.readonly',
]);

if ($token = $_SESSION['google.calendar.token']) {
    $client->setAccessToken($token);
}

$credentials = new Google_AssertionCredentials($service_email, $client->getScopes(), $certFile);
$client->setAssertionCredentials($credentials);
$service = new Google_CalendarService($client);
于 2013-10-02T05:01:43.047 に答える