Ligar um Google Calendar
Este guia mostra-lhe como ligar o Google Calendar a um espaço de trabalho. É por espaço de trabalho: sincroniza os eventos desse espaço de trabalho para o Control Center, só de leitura. Consulte Calendário e agendamento para o panorama completo.
Ligar uma conta
Secção intitulada “Ligar uma conta”- Abra Calendário na barra lateral.
- Clique em Adicionar conta de calendário na barra lateral do calendário. (A mesma secção encontra-se em Definições → Espaço de trabalho → Perfil e identidade, em Google Calendar.)
- Escolha como autorizar:
- Usar a aplicação Google do Control Center — não há nada a configurar. Esta é a predefinição quando a sua compilação inclui uma.
- Usar o meu cliente do Google Cloud — cole um ID de cliente e um segredo do seu próprio projeto (consulte Traga o seu próprio cliente Google).
- Clique em Ligar o Google Calendar. A caixa de diálogo mostra um código curto e uma ligação para a página de dispositivos da Google.
- Abra essa página em qualquer dispositivo, introduza o código e aprove o acesso pedido. A caixa de diálogo fecha-se sozinha e os seus eventos começam a sincronizar.
É o servidor, e não o seu dispositivo, que realiza esta troca e guarda o token de atualização resultante — é por isso que o código é aprovado “em qualquer dispositivo” e não nesta aplicação em concreto.
A conta é ligada apenas ao espaço de trabalho ativo. Mude de espaço de trabalho e verá, em vez disso, os calendários desse espaço de trabalho.
O fluxo de ligação pede calendar.readonly mais o seu email — os mesmos âmbitos
para a aplicação incorporada e para um cliente que cole. O Control Center lê
eventos; não cria, edita, elimina nem responde a convites na Google.
Como funciona a sincronização
Secção intitulada “Como funciona a sincronização”O servidor é o dono do agendamento: a cada dois minutos percorre as contas ligadas de cada espaço de trabalho e escreve os eventos na base de dados do espaço de trabalho. Os clientes nunca falam com a Google — leem o que o servidor escreveu.
A recolha é incremental. A primeira passagem por calendário obtém uma janela móvel (60 dias para trás, 90 dias para a frente) e captura o token de sincronização da Google; as passagens seguintes apresentam esse token e recebem apenas o que mudou, que é o que torna suportável uma cadência de dois minutos. A janela é reancorada com uma sincronização completa a cada 24 horas e sempre que a Google invalida o token.
Os tokens de atualização residem no lado do servidor, no secrets.json, sob o
diretório de dados do servidor, escritos apenas para o proprietário (0600) —
não no keychain do sistema operativo e nunca num dispositivo cliente.
Ligar várias contas
Secção intitulada “Ligar várias contas”Um espaço de trabalho pode ligar várias contas Google (por exemplo, de trabalho e pessoal). Repita o passo de ligação para cada uma; os respetivos eventos são combinados nas mesmas vistas de mês, semana e agenda. Cada conta sincroniza e atualiza-se de forma independente e cada uma pode ser desligada por si só.
Voltar a ligar uma conta expirada
Secção intitulada “Voltar a ligar uma conta expirada”Se a Google invalidar definitivamente o token de uma conta (uma sessão revogada ou expirada há muito tempo), a sincronização para e o Control Center mostra um banner Voltar a ligar no calendário, juntamente com uma notificação no computador. Clique em Voltar a ligar e aprove um novo código; o banner desaparece na sincronização seguinte com êxito.
Desligar uma conta
Secção intitulada “Desligar uma conta”Na barra lateral do calendário (ou em Definições → Espaço de trabalho → Perfil e identidade), clique em Desligar na conta. Isto elimina os eventos sincronizados e limpa os tokens guardados no servidor.
Ligar a partir de um servidor headless
Secção intitulada “Ligar a partir de um servidor headless”Um servidor sem interface gráfica liga a mesma conta a partir do seu próprio terminal:
GOOGLE_OAUTH_CLIENT_ID=<id> GOOGLE_OAUTH_CLIENT_SECRET=<secret> \ cc_server calendar connect --data-dir <dir> --workspace <workspace-id>Imprime um código e um URL, aguarda a aprovação e, em seguida, guarda os tokens e sincroniza na recolha seguinte.
Uma compilação a partir do código-fonte não inclui nenhum cliente Google,
pelo que o ID e o segredo são obrigatórios — defina GOOGLE_OAUTH_CLIENT_ID e
GOOGLE_OAUTH_CLIENT_SECRET. Não existe nenhuma flag --google-client-id (as
flags desconhecidas são ignoradas). Sem o par de variáveis de ambiente, o comando
termina com um erro de cliente em falta.
Traga o seu próprio cliente Google (forks e alojamento próprio)
Secção intitulada “Traga o seu próprio cliente Google (forks e alojamento próprio)”As compilações oficiais incluem um cliente Google, pelo que a maioria das pessoas nunca precisa disto. Traga o seu próprio se compilar a partir do código-fonte, executar o seu próprio servidor ou quiser que o ecrã de consentimento apresente o seu próprio projeto.
- Na Google Cloud Console, ative a Google Calendar API e configure o ecrã de consentimento OAuth, adicionando os âmbitos
calendar.readonly,openideemail. Enquanto a aplicação não estiver verificada, adicione-se como utilizador de teste. Adicionarcalendar.eventsno ecrã de consentimento não ativa o RSVP — o Control Center nunca pede esse âmbito. - Crie um ID de cliente OAuth do tipo de aplicação TVs and limited input devices e copie tanto o ID de cliente como o segredo do cliente.
- Forneça-os por ligação (escolha Usar o meu cliente do Google Cloud na caixa de diálogo) ou para todo o servidor com
GOOGLE_OAUTH_CLIENT_IDeGOOGLE_OAUTH_CLIENT_SECRET.
Um par para todo o servidor substitui o incorporado em todo o lado, incluindo por trás da opção “usar a aplicação Google do Control Center” — por isso, no seu próprio servidor, essa opção é a sua aplicação.
O segredo do cliente nunca sai do servidor: nenhuma resposta RPC o transporta e uma conta ligada através do próprio cliente do servidor guarda um marcador em vez de uma cópia do par, pelo que rodá-lo é uma questão de reiniciar com um novo valor.
Resolução de problemas
Secção intitulada “Resolução de problemas”| Sintoma | Causa provável |
|---|---|
| A caixa de diálogo não oferece nenhuma opção incorporada | Esta compilação não inclui nenhum cliente Google (uma compilação a partir do código-fonte), ou o servidor foi iniciado com apenas metade do par. Tanto o ID como o segredo são obrigatórios |
invalid_scope ao iniciar o fluxo |
O Calendar não está autorizado para um cliente device-code nesse projeto Cloud. Use antes um projeto de cliente loopback ou web |
invalid_client devolvido pela Google |
O cliente não é um cliente TVs and limited input devices, ou o ID e o segredo são de clientes diferentes |
| A aprovação é bem-sucedida mas a sincronização está vazia | A sua conta não é um utilizador de teste no ecrã de consentimento, ou calendar.readonly não foi concedido |
| O código expira antes de o aprovar | Os códigos de dispositivo têm vida curta. Inicie a ligação novamente para obter um novo |
| “Não foi possível atualizar a sua resposta” num RSVP | Esperado: o fluxo de ligação nunca pede calendar.events |
| A sincronização para com um aviso de atualização no registo do servidor | A conta foi ligada com um cliente que já não está configurado. Volte a ligar a conta ou restaure esse ID de cliente e segredo |
Guias relacionados
Secção intitulada “Guias relacionados”- Gravar e resumir uma reunião: transforme um evento numa gravação
- Executar um servidor headless: onde residem os tokens e o agendamento da sincronização
- Configurar a integração com o GitHub