Rails + Google Kalender-API-Ereignisse nicht erstellt
Ich habe eine Rails-Web-App erstellt. Wenn der Nutzer bestimmte Aktionen ausführt, muss meine App ein neues Ereignis in meinem Google Kalender erstellen. Für meine Aufgabe wähle ich die Server-zu-Server-Autorisierung.
Ich schrieb den nächsten Ruby-Code:
client = Google::APIClient.new({:application_name => "Rails calendar",
:application_version => "1.0"})
keypath = Rails.root.join('config','google_secrets.p12').to_s
key = Google::APIClient::PKCS12.load_key(keypath, "notasecret")
# generate request body for authorization
client.authorization = Signet::OAuth2::Client.new(
:token_credential_uri => 'https://accounts.google.com/o/oauth2/token',
:audience => 'https://accounts.google.com/o/oauth2/token',
:scope => 'https://www.googleapis.com/auth/calendar',
:issuer => '***',
:signing_key => key).tap{ |auth| auth.fetch_access_token! }
api_method = client.discovered_api('calendar','v3').events.insert
@meeting_data = {
guests: [{email: '***@gmail.com'}, {email: '***@gmail.com'}],
start_time: "2016-08-10T19:00:00+03:00",
end_time: "2016-08-10T20:00:00+03:00",
topic: "Test meeting",
messages_thread_id: 2
}
event = {
summary: @meeting_data[:topic],
start: {
dateTime: @meeting_data[:start_time],
time_zone: 'Asia/Jerusalem'
},
end: {
dateTime: @meeting_data[:end_time],
time_zone: 'Asia/Jerusalem'
},
attendees: @meeting_data[:guests],
visibility: 'private',
reminders: {
useDefault: true,
}
}
result = client.execute(:api_method => api_method,
:parameters => {calendarId: 'primary'},
:body => JSON.dump(event),
:headers => {'Content-Type' => 'application/json'})
puts result.data.as_json
Aber wenn ich versuche, diesen Code und Server zu verwenden, gebe ich das Ergebnis als JSON zurück. Wenn ich auf die URL des "erstellten" Ereignisses gehe, zeigt Google mir, dass das Ereignis nicht existiert.
{"kind"=>"calendar#event", "etag"=>"***", "id"=>"***", "status"=>"confirmed", "htmlLink"=>"https://www.google.com/calendar/event?eid=***", "created"=>"2016-08-04T11:54:46.000Z", "updated"=>"2016-08-04T11:54:46.327Z", "summary"=>"Test meeting", "creator"=>{"email"=>"***", "self"=>true}, "organizer"=>{"email"=>"***", "self"=>true}, "start"=>{"dateTime"=>"2016-08-10T16:00:00Z", "timeZone"=>"Asia/Jerusalem"}, "end"=>{"dateTime"=>"2016-08-10T17:00:00Z", "timeZone"=>"Asia/Jerusalem"}, "visibility"=>"private", "iCalUID"=>"***", "sequence"=>0, "attendees"=>[{"email"=>"***@gmail.com", "displayName"=>"***", "responseStatus"=>"needsAction"}, {"email"=>"***@gmail.com", "displayName"=>"***", "responseStatus"=>"needsAction"}], "reminders"=>{"useDefault"=>true}}