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
1
A
Répondre
1
AUTORISATION DE CONFIGURATION DE CALENDRIER GOOGLE
lien peu utile: https://developers.google.com/api-client-library/ruby/
- Aller à: https://console.developers.google.com/iam-admin/projects
- Cliquez sur "+ Créer un projet"
- Entrez un "Nom du projet" et « ID du projet "et cliquez sur" Créer "
- Sous" Bibliothèque ", sélectionnez" API calendrier "
- Cliquez sur "> Activer"
- Retour à: https://console.developers.google.com/iam-admin/projects
- Cliquez sur "Comptes de service"
- Cliquez sur "Sélectionner un projet"
- Choisissez votre projet et cliquez sur "Ouvrir"
- Cliquez sur "+ Créer un compte de service"
- Entrez un « nom de compte de service » et choisir un « rôle » (j'ai choisi « éditeur »)
- Cochez la case « Aménagez une nouvelle clé privée »
- 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).
- Copiez le « client_email » du fichier JSON et accédez aux paramètres du Google Agenda que vous souhaitez cette application d'accès.
- Cliquez sur « Calendriers »
- Choisissez le calendrier correct
- Cliquez sur « Modifier les paramètres de partage » sous « Calendrier Adresse: »
- Ajouter l'e-mail que vous avez copié et sélectionnez l'autorisation appropriée
- Cliquez sur « Enregistrer »
- Copiez l '"ID du calendrier" à droite de "Adresse du calendrier:"
- 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.