Ruby on rails 如何解决;许可不足“;Ruby的谷歌日历API出错?

Ruby on rails 如何解决;许可不足“;Ruby的谷歌日历API出错?,ruby-on-rails,calendar,Ruby On Rails,Calendar,我正在尝试使用用于Ruby的Google日历API,这是我从Google控制台站点获取的代码。但是当我试图运行这个代码时,我得到了这个错误 ......rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/google-api-client-0.8.6/lib/google/api_client.rb:662:in `block (2 levels) in execute!': Insufficient Permission (Google::APIClie

我正在尝试使用用于Ruby的Google日历API,这是我从Google控制台站点获取的代码。但是当我试图运行这个代码时,我得到了这个错误

......rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/google-api-client-0.8.6/lib/google/api_client.rb:662:in `block (2 levels) in execute!': Insufficient Permission (Google::APIClient::ClientError)


require 'google/api_client'
require 'google/api_client/client_secrets'
require 'google/api_client/auth/installed_app'
require 'google/api_client/auth/storage'
require 'google/api_client/auth/storages/file_store'
require 'fileutils'

APPLICATION_NAME = 'Calendar API Quickstart'
CLIENT_SECRETS_PATH = 'client_secret.json'
CREDENTIALS_PATH = File.join(Dir.home, '.credentials',
                             "calendar-api-quickstart.json")
#SCOPE = 'https://www.googleapis.com/auth/calendar.readonly'


SCOPE = 'https://www.googleapis.com/auth/calendar'
def authorize
  FileUtils.mkdir_p(File.dirname(CREDENTIALS_PATH))

  file_store = Google::APIClient::FileStore.new(CREDENTIALS_PATH)
  storage = Google::APIClient::Storage.new(file_store)
  auth = storage.authorize

  if auth.nil? || (auth.expired? && auth.refresh_token.nil?)
    app_info = Google::APIClient::ClientSecrets.load(CLIENT_SECRETS_PATH)
    flow = Google::APIClient::InstalledAppFlow.new({
      :client_id => app_info.client_id,
     # :redirect_uri => 'http://localhost:3000/auth/google_oauth2/callback',

      :client_secret => app_info.client_secret,
      :scope => SCOPE})
    auth = flow.authorize(storage)
    puts "Credentials saved to #{CREDENTIALS_PATH}" unless auth.nil?
  end
  auth
end

# Initialize the API
client = Google::APIClient.new(:application_name => APPLICATION_NAME)
calendar_api = client.discovered_api('calendar', 'v3')
client.authorization = authorize


=begin
# Fetch the next 10 events for the user
results = client.execute!(
  :api_method => calendar_api.events.list,
  :parameters => {
    :calendarId => 'primary',
    :maxResults => 10,
    :singleEvents => true,
    :orderBy => 'startTime',
    :timeMin => Time.now.iso8601 })

puts "Upcoming events:"
puts "No upcoming events found" if results.data.items.empty?
results.data.items.each do |event|
  start = event.start.date || event.start.date_time
  puts "- #{event.summary} (#{start})" 
  puts "- #{event.updated} (#{start})" 
#  puts "- #{event.accessRole} (#{start})" 


  ##여기에 뭔가 생기는군

end
=end

event = {
  'summary' => 'Google I/O 2015',
  'location' => '800 Howard St., San Francisco, CA 94103',
  'description' => 'A chance to hear more about Google\'s developer products.',
  'start' => {
    'dateTime' => '2015-05-28T09:00:00-07:00',
    'timeZone' => 'America/Los_Angeles',
  },
  'end' => {
    'dateTime' => '2015-05-28T17:00:00-07:00',
    'timeZone' => 'America/Los_Angeles',
  },
  'recurrence' => [
    'RRULE:FREQ=DAILY;COUNT=2'
  ],
  'attendees' => [
    {'email' => 'lpage@example.com'},
    {'email' => 'sbrin@example.com'},
  ],
  'reminders' => {
    'useDefault' => false,
    'overrides' => [
      {'method' => 'email', 'minutes' => 24 * 60},
      {'method' => 'sms', 'minutes' => 10},
    ],
  },
}

results = client.execute!(
  :api_method => calendar_api.events.insert,
  :parameters => {
    :calendarId => 'primary'},
  :body_object => event)
event = results.data
puts "Event created: #{event.htmlLink}"
我从这里的控制台站点复制了功能部件。我如何允许使用日历应用程序的权限


对于基本只读应用程序,我能够运行该应用程序,因为我在控制台设置中启用了日历应用程序,但不知道如何继续下一步。请让我知道如何解决这个问题:)

我和你一样有麻烦。您应该更改以下两点:

  • 您的应用程序名称旨在通过API绘制快速样本数据。您可以设置自己的应用程序名称。该名称是您在Google开发者控制台中注册的名称

  • 您应该将
    凭证路径
    更改为您自己的路径。您编写的路径仅适用于快速入门示例

{File.join(Dir.home、.credentials、“calendar api quickstart.json”)}>>

{File.join(Dir.home,'.credentials',“client_secret.json”)}

我和你一样遇到了麻烦。你应该改变以下两点:

  • 您的应用程序名称旨在通过API绘制快速样本数据。它适合设置您自己的应用程序名称。该名称是您在Google developer console中注册的名称

  • 您应该将
    凭证路径
    更改为您自己的路径。您编写的路径仅用于快速入门示例

{File.join(Dir.home、.credentials、“calendar api quickstart.json”)}>>

{File.join(Dir.home、.credentials、“client_secret.json”)}

你解决了吗?我找不到解决办法。它适用于events.list,但不适用于events.insert,与您的情况相同。您解决了它吗?我找不到解决办法。它适用于events.list,但不适用于events.insert,与您的情况相同。您解决了它吗?我找不到解决办法。它适用于events.list,但不适用于events.insert,与您的情况相同。