Ruby on rails 如何解决;许可不足“;Ruby的谷歌日历API出错?
我正在尝试使用用于Ruby的Google日历API,这是我从Google控制台站点获取的代码。但是当我试图运行这个代码时,我得到了这个错误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
......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,与您的情况相同。