Google Calendar API と google-api-ruby-client ライブラリのドキュメントを読んでいますが、それらを理解するのに苦労しています。
ユーザーがイベントと呼ばれるオブジェクトを作成できるようにするフロント エンドを持つ Rails アプリケーションがあり、サーバー上のデータベースにそれらを保存します。私が望むのは、これらのイベントがデータベースに保存された後、Google カレンダー API を呼び出して、Google カレンダーでイベントを作成することです (サーバーが作成し、サーバーのみがそのカレンダーを変更するためのアクセス権を持っています)。
ruby ライブラリを使用して API で認証する方法を理解するのに多くの問題があります。OAuth2 を使用しても意味がありません。ユーザーのデータには興味がないため、ユーザーに対して何も承認する必要がないからです。サービス アカウント (http://code.google.com/p/google-api-ruby-client/wiki/ServiceAccounts) を調べましたが、Google カレンダーはサービス アカウントでサポートされていないようです。
誰にもアイデアはありますか?これは私が実験していたコードです (サービス アカウントを使用):
@client = Google::APIClient.new(:key => 'my_api_key')
path_to_key_file = '/somepath/aaaaaa-privatekey.p12'
passphrase = 'my_pass_phrase'
key = Google::APIClient::PKCS12.load_key(path_to_key_file, passphrase)
asserter = Google::APIClient::JWTAsserter.new(
'blah_blah@developer.gserviceaccount.com',
'https://www.googleapis.com/auth/calendar',
key)
# To request an access token, call authorize:
@client.authorization = asserter.authorize()
calendar = @client.discovered_api('calendar', 'v3')
event = {
'summary' => 'Appointment',
'location' => 'Somewhere',
'start' => {
'dateTime' => '2012-06-03T10:00:00.000-07:00'
},
'end' => {
'dateTime' => '2012-06-03T10:25:00.000-07:00'
},
'attendees' => [
{
'email' => 'attendeeEmail'
},
#...
]
}
result = @client.execute!(:api_method => calendar.events.insert,
:parameters => {'calendarId' => 'primary'},
:body => JSON.dump(event),
:headers => {'Content-Type' => 'application/json'})
もちろん、次のエラー メッセージが表示されます: Google::APIClient::ClientError (ユーザーは Google カレンダーにサインアップする必要があります。) サービス アカウントが Google カレンダーをサポートしていないためです。