1

Мне потребовалось немного чтения в нескольких местах, а также просмотр в Stack Overflow, чтобы выяснить, как использовать клиент Google API Ruby с Google Calendar в серверном приложении, не предоставляя серверному клиенту полный доступ ко всем пользователям. Я просто хотел, чтобы у него была возможность получать/создавать/обновлять/удалять события для одного календаря. Могут быть другие способы сделать это, но я документирую ниже, как я это сделал, поскольку это может помочь кому-то другому.Как настроить API календаря Google с помощью клиента Ruby для серверных приложений

ответ

1

РАЗРЕШЕНИЯ УСТАНОВКА ДЛЯ GOOGLE КАЛЕНДАРЬ

Немного полезно ссылка: https://developers.google.com/api-client-library/ruby/

  1. Перейти к: https://console.developers.google.com/iam-admin/projects
  2. Нажмите "+ Создать проект"
  3. Введите "Имя проекта" и «Project ID »и нажмите« Создать »
  4. В разделе« Библиотека »выберите« API календаря »
  5. Нажмите "> Включить"
  6. Вернуться к: https://console.developers.google.com/iam-admin/projects
  7. Нажмите "Service Accounts"
  8. Нажмите "Выбрать проект"
  9. Выберите проект и нажмите кнопку "Открыть"
  10. Нажмите "+ Создать учетную запись службы"
  11. Введите имя учетной записи «Сервис» и выберите «Роль» (я выбрал «редактор»)
  12. Check «Furnish новый секретный ключ»
  13. Нажмите «Создать»

Файл JSON будет загружен на ваш компьютер. Переместите этот файл в какое-либо место, доступное вашему приложению, и переименуйте его в «google_api.json» (или все, что вы хотите, если оно соответствует правильному пути ниже). Убедитесь, что только приложение может получить доступ к этому файлу (он содержит закрытый ключ).

  1. Скопируйте «client_email» из файла JSON и перейдите к настройкам Календаря Google, к которому вы хотите получить доступ к этому приложению.
  2. Нажмите кнопку «Календарь»
  3. Выберите правильный календарь
  4. Нажмите кнопку «Настройки совместного доступа Изменить» найдено в разделе «Адрес календаря:»
  5. Добавить электронной почты, который вы скопировали и выбрать правильное разрешение
  6. Нажмите кнопку «Сохранить»
  7. Скопируйте «Идентификатор календаря» справа от «Адрес календаря»:
  8. Вы можете жестко указать идентификатор календаря ниже или поместить его в файл YAML или в качестве переменной окружения.

Вот пример файл для авторизации и доступа к Гоогу Calendar API:

# http://www.rubydoc.info/github/google/google-api-ruby-client/Google/Apis/CalendarV3 
require 'googleauth' 
require 'google/apis/calendar_v3' 

class MyApp::GoogleCalendar 

    def initialize 
    authorize 
    end 

    def service 
    @service 
    end 

    def events(reload=false) 
    # NOTE: This is just for demonstration purposes and not complete. 
    # If you have more than 2500 results, you'll need to get more than  
    # one set of results. 
    @events = nil if reload 
    @events ||= service.list_events(calendar_id, max_results: 2500).items 
    end 

private 

    def calendar_id 
    @calendar_id ||= # The calendar ID you copied in step 20 above (or some reference to it). 
    end 

    def authorize 
    calendar = Google::Apis::CalendarV3::CalendarService.new 
    calendar.client_options.application_name = 'App Name' # This is optional 
    calendar.client_options.application_version = 'App Version' # This is optional 

    # An alternative to the following line is to set the ENV variable directly 
    # in the environment or use a gem that turns a YAML file into ENV variables 
    ENV['GOOGLE_APPLICATION_CREDENTIALS'] = "/path/to/your/google_api.json" 
    scopes = [Google::Apis::CalendarV3::AUTH_CALENDAR] 
    calendar.authorization = Google::Auth.get_application_default(scopes) 

    @service = calendar 
    end 

end 

Итак, теперь вы можете позвонить и получить cal = MyApp::GoogleCalendar.new событие с cal.events.Или вы можете напрямую звонить с cal.service.some_method(some_args), а не создавать методы в этом файле.