【问题标题】:Rails + Google Calendar API events not created未创建 Rails + Google Calendar API 事件
【发布时间】:2016-08-04 12:05:41
【问题描述】:

我创建了 Rails 网络应用程序。当用户进行某些操作时,我的应用程序必须在我的 Google 日历中创建新事件。对于我的任务,我选择服务器到服务器授权。

我编写了下一个 ruby​​ 代码:

  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

但是当我尝试使用该代码并且服务器将结果作为 JSON 返回给我时,如果我继续“创建”事件的 url,谷歌会向我显示该事件不存在的消息。

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

【问题讨论】:

    标签: ruby-on-rails ruby google-api google-calendar-api


    【解决方案1】:

    我遇到了同样的问题。需要为日历的“client_email”提供写入规则。

    您使用组织日历。这就是为什么只有组织管理员才能做到这一点。

    【讨论】:

      猜你喜欢
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多