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}}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage