我一直在閱讀Google Calendar API和google-api-ruby-client庫的文檔,但我在理解它們時遇到了很多麻煩。如何在Google Calendar API中使用google-api-ruby-client?
我有一個Rails應用程序,其前端允許用戶創建名爲Events的對象,並將它們保存在我的服務器上的數據庫中。我想要的是,在將這些事件保存在數據庫中後,我想調用Google Calendar API在Google日曆上創建事件(該服務器已創建,並且只有服務器纔有權修改該日曆)。
我有很多問題搞清楚如何使用紅寶石庫進行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(
'[email protected]',
'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'})
那麼當然我收到此錯誤信息:谷歌:: APIClient :: ClientError(用戶必須對谷歌日曆簽署了),因爲服務帳戶不支持Google日曆。