1

Il m'a fallu un peu de lecture à plusieurs endroits, et je cherchais dans Stack Overflow pour savoir comment utiliser le client Google API Ruby avec Google Calendar dans une application serveur à serveur sans donner au client serveur un accès complet à tous les utilisateurs. Je voulais juste avoir la possibilité d'obtenir/créer/mettre à jour/supprimer des événements pour un seul calendrier. Il y a peut-être d'autres façons de le faire, mais je documente ci-dessous comment je l'ai fait, car cela pourrait aider quelqu'un d'autre.Comment configurer l'API Google Calendar en utilisant le client Ruby pour les applications serveur vers serveur

Répondre

1

AUTORISATION DE CONFIGURATION DE CALENDRIER GOOGLE

lien peu utile: https://developers.google.com/api-client-library/ruby/

  1. Aller à: https://console.developers.google.com/iam-admin/projects
  2. Cliquez sur "+ Créer un projet"
  3. Entrez un "Nom du projet" et « ID du projet "et cliquez sur" Créer "
  4. Sous" Bibliothèque ", sélectionnez" API calendrier "
  5. Cliquez sur "> Activer"
  6. Retour à: https://console.developers.google.com/iam-admin/projects
  7. Cliquez sur "Comptes de service"
  8. Cliquez sur "Sélectionner un projet"
  9. Choisissez votre projet et cliquez sur "Ouvrir"
  10. Cliquez sur "+ Créer un compte de service"
  11. Entrez un « nom de compte de service » et choisir un « rôle » (j'ai choisi « éditeur »)
  12. Cochez la case « Aménagez une nouvelle clé privée »
  13. Cliquez sur « Créer »

Un fichier JSON sera téléchargé sur votre ordinateur. Déplacez ce fichier à un endroit accessible par votre application et renommez-le en "google_api.json" (ou ce que vous voulez, à condition qu'il corresponde au bon chemin ci-dessous). Assurez-vous que seule l'application peut accéder à ce fichier (il contient une clé privée).

  1. Copiez le « client_email » du fichier JSON et accédez aux paramètres du Google Agenda que vous souhaitez cette application d'accès.
  2. Cliquez sur « Calendriers »
  3. Choisissez le calendrier correct
  4. Cliquez sur « Modifier les paramètres de partage » sous « Calendrier Adresse: »
  5. Ajouter l'e-mail que vous avez copié et sélectionnez l'autorisation appropriée
  6. Cliquez sur « Enregistrer »
  7. Copiez l '"ID du calendrier" à droite de "Adresse du calendrier:"
  8. Vous pouvez coder en dur l'ID du calendrier ci-dessous ou le placer dans un fichier YAML ou en tant que variable d'environnement.

Voici un exemple de fichier pour autoriser et accéder à l'API Calendar Googe:

# 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 

vous pouvez donc maintenant appeler cal = MyApp::GoogleCalendar.new et obtenir les événements avec cal.events.Ou vous pouvez effectuer des appels directement avec cal.service.some_method(some_args), plutôt que de créer des méthodes dans ce fichier.