未创建Rails + Google Calendar API事件

我创建了rails web app。 当用户执行某些操作时,我的应用必须在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}} 

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

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