我一直在阅读 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 日历。