web-dev-qa-db-ja.com

oAuth=認証なしでGoogle Calendar APIに接続するにはどうすればよいですか?

私はGoogle Calendar APIと認証に関するドキュメントを研究しています( http://code.google.com/apis/calendar/v3/using.html#auth )。ここで述べたユースケースは、ユーザーのカレンダーにアクセスするアプリケーションを作成しているようです。ただし、Webサイトの所有者のカレンダーにアクセスし、その1つのカレンダーの情報のみを表示するWebページを作成しています。そのため、ユーザーにGoogleアカウント情報にoAuthがやりたいことを入力することを望まない。

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

同様の質問があります: OAuth Googleカレンダーで1つのカレンダーのみにアクセスするには? これは、ポスターが元々資格情報を直接渡していたことを示しているようです。この機能はまだ利用可能ですか?説明したユースケースをどのように処理しますか?

29
Jon Hargett

私は同じ問題を抱えています。私はあなたが望むものを正確に作成するこの3部のチュートリアルを見つけました。 予約のWebページ

このソリューションは私には有効ですが、RESTで直接管理する必要があります。

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

11
Andrej Bergant

私が間違っていなければ、彼らは今このためのサービスアカウントを立ち上げました: 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(...)
16
gX.

こちらもご覧ください:

https://github.com/googleapis/google-api-php-client#authentication-with-service-accounts

サービスアカウントを作成した後、ユーザーがサービスが所有するカレンダーにアイテムを追加するためのプロンプトなしで認証できます。

0
Vasil Levski