Μετάβαση στο περιεχόμενο

Σύνδεση Google Calendar

Αυτός ο οδηγός δείχνει πώς να συνδέσετε το Google Calendar σε έναν χώρο εργασίας. Η σύνδεση είναι ανά χώρο εργασίας: συγχρονίζει τα γεγονότα αυτού του χώρου στο Control Center, μόνο για ανάγνωση. Δείτε το Ημερολόγιο και προγραμματισμός για την πλήρη εικόνα.

  1. Ανοίξτε το Ημερολόγιο στην πλαϊνή στήλη.
  2. Κάντε κλικ στο Προσθήκη λογαριασμού ημερολογίου στην πλαϊνή στήλη του ημερολογίου. (Η ίδια ενότητα βρίσκεται στις Ρυθμίσεις → Χώρος εργασίας → Προφίλ και ταυτότητα, κάτω από το Google Calendar.)
  3. Επιλέξτε τον τρόπο εξουσιοδότησης:
    • Χρήση της εφαρμογής Google του Control Center — δεν χρειάζεται καμία ρύθμιση. Είναι η προεπιλογή όταν το build σας τη συνοδεύει.
    • Χρήση του δικού μου πελάτη Google Cloud — επικολλήστε ένα client id και ένα secret από το δικό σας έργο (δείτε Φέρτε τον δικό σας πελάτη Google).
  4. Κάντε κλικ στο Σύνδεση Google Calendar. Το παράθυρο διαλόγου εμφανίζει έναν σύντομο κωδικό και έναν σύνδεσμο προς τη σελίδα συσκευών της Google.
  5. Ανοίξτε αυτή τη σελίδα σε οποιαδήποτε συσκευή, εισαγάγετε τον κωδικό και εγκρίνετε την πρόσβαση που ζητείται. Το παράθυρο διαλόγου κλείνει μόνο του και τα γεγονότα σας αρχίζουν να συγχρονίζονται.

Την ανταλλαγή την εκτελεί ο διακομιστής, όχι η συσκευή σας, και αυτός κρατά το refresh token που προκύπτει — γι’ αυτό ο κωδικός εγκρίνεται σε «οποιαδήποτε συσκευή» και όχι ειδικά σε αυτή την εφαρμογή.

Ο λογαριασμός συνδέεται μόνο στον ενεργό χώρο εργασίας. Αν αλλάξετε χώρο εργασίας, θα δείτε τα ημερολόγια εκείνου του χώρου.

Η ροή σύνδεσης ζητά το calendar.readonly καθώς και το email σας — τα ίδια scopes για την ενσωματωμένη εφαρμογή και για τον πελάτη που επικολλάτε. Το Control Center διαβάζει γεγονότα· δεν δημιουργεί, δεν επεξεργάζεται, δεν διαγράφει ούτε απαντά σε προσκλήσεις στη Google.

Τον προγραμματισμό τον έχει ο διακομιστής: σαρώνει τους συνδεδεμένους λογαριασμούς κάθε χώρου εργασίας κάθε δύο λεπτά και γράφει τα γεγονότα στη βάση δεδομένων του χώρου εργασίας. Οι πελάτες δεν μιλούν ποτέ απευθείας με τη Google — διαβάζουν ό,τι έγραψε ο διακομιστής.

Η σάρωση είναι σταδιακή. Το πρώτο πέρασμα για κάθε ημερολόγιο αντλεί ένα κυλιόμενο παράθυρο (60 ημέρες πίσω, 90 ημέρες μπροστά) και καταγράφει το sync token της Google· τα επόμενα περάσματα παρουσιάζουν αυτό το token και λαμβάνουν μόνο ό,τι άλλαξε, και αυτό είναι που κάνει βιώσιμη τη συχνότητα των δύο λεπτών. Το παράθυρο επαναπροσδιορίζεται με πλήρη συγχρονισμό κάθε 24 ώρες και κάθε φορά που η Google ακυρώνει το token.

Τα refresh tokens βρίσκονται στην πλευρά του διακομιστή, στο secrets.json στον κατάλογο δεδομένων του διακομιστή, με δικαιώματα μόνο για τον ιδιοκτήτη (0600) — όχι στην αποθήκη κλειδιών του λειτουργικού συστήματος και ποτέ σε συσκευή-πελάτη.

Ένας χώρος εργασίας μπορεί να συνδέσει πολλούς λογαριασμούς Google (για παράδειγμα έναν για την εργασία και έναν προσωπικό). Επαναλάβετε το βήμα της σύνδεσης για τον καθένα· τα γεγονότα τους ενσωματώνονται στις ίδιες προβολές μήνα / εβδομάδας / ατζέντας. Κάθε λογαριασμός συγχρονίζεται και ανανεώνεται ανεξάρτητα και ο καθένας μπορεί να αποσυνδεθεί χωριστά.

Αν η Google ακυρώσει οριστικά το token ενός λογαριασμού (ανακληθείσα ή από καιρό ληγμένη συνεδρία), ο συγχρονισμός σταματά και το Control Center εμφανίζει ένα πλαίσιο Επανασύνδεση στο ημερολόγιο, μαζί με ειδοποίηση επιφάνειας εργασίας. Κάντε κλικ στο Επανασύνδεση και εγκρίνετε έναν νέο κωδικό· το πλαίσιο εξαφανίζεται στον επόμενο επιτυχή συγχρονισμό.

Από την πλαϊνή στήλη του ημερολογίου (ή από τις Ρυθμίσεις → Χώρος εργασίας → Προφίλ και ταυτότητα), κάντε κλικ στο Αποσύνδεση για τον λογαριασμό. Αυτό διαγράφει τα συγχρονισμένα γεγονότα του και καθαρίζει τα αποθηκευμένα tokens του στον διακομιστή.

Ένας διακομιστής χωρίς γραφικό περιβάλλον συνδέει τον ίδιο λογαριασμό από το δικό του τερματικό:

Παράθυρο τερματικού
GOOGLE_OAUTH_CLIENT_ID=<id> GOOGLE_OAUTH_CLIENT_SECRET=<secret> \
cc_server calendar connect --data-dir <dir> --workspace <workspace-id>

Εκτυπώνει έναν κωδικό και ένα URL, περιμένει την έγκριση, και μετά αποθηκεύει τα tokens και συγχρονίζει στην επόμενη σάρωση.

Ένα build από τον πηγαίο κώδικα δεν περιλαμβάνει κανέναν πελάτη Google, οπότε το id και το secret είναι υποχρεωτικά — ορίστε τα GOOGLE_OAUTH_CLIENT_ID και GOOGLE_OAUTH_CLIENT_SECRET. Δεν υπάρχει flag --google-client-id (τα άγνωστα flags αγνοούνται). Χωρίς το ζεύγος μεταβλητών περιβάλλοντος, η εντολή τερματίζεται με σφάλμα ελλιπούς πελάτη.

Φέρτε τον δικό σας πελάτη Google (forks και αυτοφιλοξενία)

Ενότητα με τίτλο «Φέρτε τον δικό σας πελάτη Google (forks και αυτοφιλοξενία)»

Οι εκδόσεις που κυκλοφορούν περιλαμβάνουν πελάτη Google, οπότε οι περισσότεροι δεν χρειάζεται να αγγίξουν ποτέ αυτή τη ρύθμιση. Φέρτε τον δικό σας αν κάνετε build από τον πηγαίο κώδικα, αν εκτελείτε δικό σας διακομιστή ή αν θέλετε η οθόνη συγκατάθεσης να αναφέρει το δικό σας έργο.

  1. Στο Google Cloud Console, ενεργοποιήστε το Google Calendar API και ρυθμίστε το OAuth consent screen, προσθέτοντας τα scopes calendar.readonly, openid και email. Όσο η εφαρμογή δεν έχει επαληθευτεί, προσθέστε τον εαυτό σας ως test user. Η προσθήκη του calendar.events στην οθόνη συγκατάθεσης δεν ενεργοποιεί το RSVP — το Control Center δεν ζητά ποτέ αυτό το scope.
  2. Δημιουργήστε ένα OAuth client ID με τύπο εφαρμογής TVs and limited input devices και αντιγράψτε τόσο το client id όσο και το client secret.
  3. Δώστε τα είτε ανά σύνδεση (επιλέξτε Χρήση του δικού μου πελάτη Google Cloud στο παράθυρο διαλόγου) είτε για ολόκληρο τον διακομιστή με τα GOOGLE_OAUTH_CLIENT_ID και GOOGLE_OAUTH_CLIENT_SECRET.

Ένα ζεύγος για ολόκληρο τον διακομιστή αντικαθιστά το ενσωματωμένο παντού, ακόμη και πίσω από την επιλογή «χρήση της εφαρμογής Google του Control Center» — έτσι, στον δικό σας διακομιστή αυτή η επιλογή είναι η δική σας εφαρμογή.

Το client secret δεν εγκαταλείπει ποτέ τον διακομιστή: καμία απάντηση RPC δεν το μεταφέρει και ένας λογαριασμός που συνδέθηκε μέσω του πελάτη του ίδιου του διακομιστή αποθηκεύει έναν δείκτη και όχι αντίγραφο του ζεύγους, οπότε η εναλλαγή του είναι ζήτημα επανεκκίνησης με νέα τιμή.

Σύμπτωμα Πιθανή αιτία
Το παράθυρο διαλόγου δεν προσφέρει ενσωματωμένη επιλογή Αυτό το build δεν περιλαμβάνει πελάτη Google (build από τον πηγαίο κώδικα) ή ο διακομιστής ξεκίνησε με μόνο το ένα μισό του ζεύγους. Χρειάζονται και το id και το secret
invalid_scope κατά την έναρξη της ροής Το Ημερολόγιο δεν επιτρέπεται για πελάτη device-code σε αυτό το έργο Cloud. Χρησιμοποιήστε αντ’ αυτού έργο με πελάτη loopback ή web
invalid_client από τη Google Ο πελάτης δεν είναι τύπου TVs and limited input devices ή το id και το secret προέρχονται από διαφορετικούς πελάτες
Η έγκριση πετυχαίνει αλλά ο συγχρονισμός είναι κενός Ο λογαριασμός σας δεν είναι test user στην οθόνη συγκατάθεσης ή δεν παραχωρήθηκε το calendar.readonly
Ο κωδικός λήγει πριν τον εγκρίνετε Οι κωδικοί συσκευής έχουν σύντομη διάρκεια. Ξεκινήστε ξανά τη σύνδεση για νέο κωδικό
«Δεν ήταν δυνατή η ενημέρωση της απάντησής σας» σε ένα RSVP Αναμενόμενο: η ροή σύνδεσης δεν ζητά ποτέ το calendar.events
Ο συγχρονισμός σταματά με προειδοποίηση ανανέωσης στο αρχείο καταγραφής του διακομιστή Ο λογαριασμός συνδέθηκε με πελάτη που δεν είναι πλέον ρυθμισμένος. Επανασυνδέστε τον λογαριασμό ή επαναφέρετε αυτό το client id και το secret