1

service-account-method を使用中に Google カレンダー サービスにアクセスすることはできますか? Google は、calendar-service が service-account-method のドキュメントでサポートされているサービスのリストにないため、不可能だと間接的に言っていますが、個人的には可能だと思います。しかし、どのように?

私はphpでカレンダーアプリケーションを書いています。そこで、ユーザーアクション(ログインなど)なしでGoogleカレンダーにカレンダーイベントを作成したいと考えています。

私は、最初にアプリケーションがキーファイル.p12でservice-account-methodを使用して、Googleサーバーに対して自分自身を認証する必要があることを学びました

認証に次のコードを使用しています: (ここからダウンロード: http://code.google.com/p/google-api-php-client/source/browse/trunk/examples/prediction/serviceAccount.php )

session_start();
require_once 'google-api/src/Google_Client.php';
require_once 'google-api/src/contrib/Google_CalendarService.php';
require_once 'google-api/src/contrib/Google_PredictionService.php';


$client = new Google_Client();
$client->setApplicationName(GOOGLE_APPLICATION_NAME);
$client->setClientId(GOOGLE_CLIENT_ID);

$keyfile = file_get_contents(GOOGLE_KEY_FILE);

$client->setAssertionCredentials(new Google_AssertionCredentials(
  GOOGLE_SERVICE_ACCOUNT_NAME,
  array('https://www.googleapis.com/auth/prediction'),
  $keyfile)
);

しかし、このログインは機能していないようです。その時点でサーバーがログインしているかどうかを確認するにはどうすればよいですか?

私はこれを続けたい:

$cal = new Google_CalendarService($client);
if (isset($_SESSION['token'])) {
  $client->setAccessToken($_SESSION['token']);
}
if ($client->getAccessToken()) {
  $calList = $cal->calendarList->listCalendarList();  // <- this is line 55
  print "<h1>Calendar List</h1><pre>" . print_r($calList, true) . "</pre>";

  $_SESSION['token'] = $client->getAccessToken();
} else {
  $authUrl = $client->createAuthUrl();
  print "<a class='login' href='$authUrl'>Connect Me!</a>";
}

しかし、55 行目で次のエラーが発生します。

致命的なエラー: /usr/www/users/leuchtk/ で「 GET https://www.googleapis.com/calendar/v3/users/me/calendarListの呼び出し中にエラーが発生しました: (403) 権限が不十分です」というメッセージを含むキャッチされない例外「Google_ServiceException」 html/google-api/src/io/Google_REST.php:66

スタック トレース: #0 /usr/www/users/leuchtk/html/google-api/src/io/Google_REST.php(36): Google_REST::decodeHttpResponse(Object(Google_HttpRequest)) #1 /usr/www/users/ leuchtk/html/google-api/src/service/Google_ServiceResource.php(186): Google_REST::execute(Object(Google_HttpRequest)) #2 /usr/www/users/leuchtk/html/google-api/src/contrib/ Google_CalendarService.php(205): Google_ServiceResource->__call('list', Array) #3 /usr/www/users/leuchtk/html/i_termine_admin.php(55): Google_CalendarListServiceResource->listCalendarList() #4 /usr/www /users/leuchtk/html/termine_admin.php(113): include('/usr/www/users/...') #5 {main} が /usr/www/users/leuchtk/html/google-api でスローされます/src/io/Google_REST.php 66 行目

そのため、アプリケーションがログインしていないようです。今のところ、このコードで完全に迷っています。小さな光をありがとう、そこに欠けているもの...

マルコ

4

1 に答える 1

0

この質問を参照することをお勧めします。あなたの問題は、追加するだけかもしれません

array('https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/calendar.readonly')

あなたが呼び出す場所で

$client->setAssertionCredentials();

Google PHP クライアント API: 権限が不十分です

お役に立てれば

于 2014-07-21T10:12:54.063 に答える