2012-01-24 20 views
25

GoogleカレンダーAPIと認証時のドキュメント(http://code.google.com/apis/calendar/v3/using.html#auth)を勉強しています。ここで述べたユースケースは、ユーザーのカレンダーにアクセスするアプリケーションを作成しているようです。しかし、私はWebサイトの所有者のカレンダーにアクセスし、そのカレンダーの情報だけを表示するWebページを作成しています。だから、私はoAuthがやりたいことであるユーザーのGoogleアカウント情報を入力したくない。oAuth認証なしでGoogleカレンダーAPIに接続するにはどうすればよいですか?

基本的に、プライベートGoogleカレンダーにアクセスし、資格情報をサービスに直接渡して認証する方法を探しています。

How to use OAuth with Google Calendar to access only ONE calendar? このポスターは元々資格情報を直接渡していたようです。この機能はまだ利用可能ですか?私が説明したユースケースをどうやって扱いますか?

答えて

9

私は同じ問題があります。私はこの3部のチュートリアルを見つけました。 Web page for bookings
ユーザーは自分のカレンダーに直接書き込むWebページを作成します。そのため、ユーザーはカレンダーにアクセスする権限をユーザーに与えなくてもよいのです。
この解決策は私には役立ちますが、RESTで直接管理する必要があります。

Google api phpクライアントを使用する方法を探していますが、これは少しシンプルに見えるためです。しかし、私は実際にgoogle-api-php-client/src/config.phpファイルを適切に編集してカレンダーにアクセスする必要があるため、実際のユーザーではなく自分自身を認証する方法を見つける方法をまだ見つけていません。誰かがそれを行うアイデアやスクリプトを持っているなら、私はとても感謝しています。私は間違っていないよ場合

+0

3部分からの変更がありますあなたが指している記事は答えのようです。私はチャンスがあるとすぐにそれを試してみて、それがうまくいくと答えとしてマークします。私はREST APIの使用を計画していましたが、とにかくJSONデータを処理するだけでした。ありがとう! –

+0

これはうまくいった!鍵は、アプリケーションを「インストールされたアプリケーション」として見ていることです。リフレッシュトークンを取得するために何かを一時的にリギングした後、リフレッシュトークンを使用して、ユーザーにプロンプ​​トを表示せずに新しいアクセストークンを取得することができます。 –

14

、彼らは今、このためにサービスアカウントを立ち上げました:https://developers.google.com/accounts/docs/OAuth2ServiceAccount

編集:

ここで彼らの予測API

session_start(); 
require_once "google-api-php-client/src/Google_Client.php"; 
require_once "google-api-php-client/src/contrib/Google_CalendarService.php"; 

const CLIENT_ID = '...'; 
const SERVICE_ACCOUNT_NAME = '...'; 

// Make sure you keep your key.p12 file in a secure location, and isn't 
// readable by others. 
const KEY_FILE = '...'; 

$client = new Google_Client(); 
$client->setApplicationName("..."); 


if (isset($_SESSION['token'])) { 
$client->setAccessToken($_SESSION['token']); 
} 

// Load the key in PKCS 12 format (you need to download this from the 
// Google API Console when the service account was created. 
$key = file_get_contents(KEY_FILE); 
$client->setAssertionCredentials(new Google_AssertionCredentials(
    SERVICE_ACCOUNT_NAME, 
    array('https://www.googleapis.com/auth/calendar', "https://www.googleapis.com/auth/calendar.readonly"), 
    $key) 
); 

$client->setClientId(CLIENT_ID); 
$service = new Google_CalendarService($client); 

//Save token in session 
if ($client->getAccessToken()) { 
    $_SESSION['token'] = $client->getAccessToken(); 
} 

//And now you can use the code in their PHP examples, like: $service->events->listEvents(...) 
+0

悲しいことに、Googleカレンダーのサポートはまだ追加されていません。 – thelastshadow

+1

はい。私はPrediction APIからサービスコードを修正しました。それはCalendarのために働いた –

+0

本当ですか?それは知っておくと便利です。ありがとう。 – thelastshadow

関連する問題