Я не могу понять, что я делаю неправильно. Попытка пригласить кого-то на мероприятие через учетную запись службы Google.
Шаг первый - я зашел в консоль разработчика и добавил учетную запись службы, получил ключ (хранится в лучшем виде. json в приведенном ниже коде), предоставил ему разрешения API календаря и получил разрешения присяги2:
![snapshot of my credentials panel](https://i.stack.imgur.com/00w81.png)
Шаг второй - я предоставил свой сервисный аккаунт «Делегирование GSuite для всего домена»
![enter image description here](https://i.stack.imgur.com/cyJFx.png)
Шаг третий - Со стороны GSuite я вошел в свою админ-панель, нашел этого маленького парня и сделал необходимые обновления. Я думаю? Объем? :
![snapshot of my advanced security settings](https://i.stack.imgur.com/wAru2.png)
Последнее, но не менее важное, вот код, который я запускаю.
require 'googleauth'
scope = 'https://www.googleapis.com/auth/calendar'
authorizer = Google::Auth::ServiceAccountCredentials.make_creds(
json_key_io: File.open('better.json'),
scope: scope)
authorizer.fetch_access_token!
service = Google::Apis::CalendarV3::CalendarService.new
service.authorization = authorizer
calendar_id = 'primary'
event = Google::Apis::CalendarV3::Event.new(
summary: 'douchin',
location: '800 Howard St., San Francisco, CA 94103',
description: 'A chance to hear more about Google\'s developer products.',
start: Google::Apis::CalendarV3::EventDateTime.new(
date_time: '2020-04-06T09:00:00-07:00',
time_zone: 'America/New_York'
),
end: Google::Apis::CalendarV3::EventDateTime.new(
date_time: '2020-04-06T10:00:00-07:00',
time_zone: 'America/New_York'
),
recurrence: [
'RRULE:FREQ=DAILY;COUNT=2'
],
guestsCanModify: 'TRUE',
attendees: [
Google::Apis::CalendarV3::EventAttendee.new(
email: 'brianthebiologist@gmail.com'
)
],
reminders: Google::Apis::CalendarV3::Event::Reminders.new(
use_default: false,
overrides: [
Google::Apis::CalendarV3::EventReminder.new(
reminder_method: 'email',
minutes: 24 * 60
),
Google::Apis::CalendarV3::EventReminder.new(
reminder_method: 'popup',
minutes: 10
)
]
)
)
result = service.insert_event('primary', event)
puts "Event created: #{result.html_link}"
response = service.list_events(calendar_id,
max_results: 10,
single_events: true,
order_by: 'startTime',
time_min: Time.now.iso8601)
puts 'Upcoming events:'
puts 'No upcoming events found' if response.items.empty?
response.items.each do |event|
start = event.start.date || event.start.date_time
puts "- #{event.summary} (#{event.html_link})"
end
У меня две проблемы.
1) Если я пытаюсь создать событие с участником (это то, что я на самом деле хочу), я получаю сообщение об ошибке: forbiddenForServiceAccounts: учетные записи служб не может приглашать участников без делегирования полномочий по всему домену. (Google :: Apis :: ClientError)
2) Если я пытаюсь создать событие БЕЗ каких-либо участников , он говорит, что работает, и сохраняет информацию в какой-то волшебный календарь где-то ... но он не отображается в моем календаре GSuite, когда я захожу в свою учетную запись администратора в Google. Таким образом, моя аутентификация сработала ... Я думаю ... Она возвращает ссылку на событие, но когда я пытаюсь go к ней, я получаю еще одну ошибку: "не удалось найти запрошенное событие" в пользовательском интерфейсе Google Calendar.