Geek Social — Documentação
API ReferenceAuth

GET /auth/google/link

Iniciar vínculo de conta Google (autenticado)

GET/auth/google/linkAuth: accessToken

Para usuários já autenticados que querem vincular uma conta Google à sua conta existente. Diferente de GET /auth/google (que redireciona o navegador), este endpoint retorna a URL em JSON — o frontend é responsável por levar o usuário até ela (geralmente abrindo numa popup ou redirecionando).

O state JWT carrega { mode: 'link', userId }, garantindo que o callback saiba qual conta vincular ao Google identificado.

Quando chamar

  • Tela "Configurações → Conexões" → botão "Vincular Google"
  • Frontend chama via fetch (com Bearer JWT), recebe { url }, e abre via window.location.href = url ou popup

Request

Esta requisição não tem corpo.

Sem body. Header obrigatório: Authorization: Bearer <accessToken>.

Response

200

CampoTipoRequeridoDescrição
urlstring (uri)simURL de autorização do Google. Frontend deve redirecionar o navegador para ela.
{
  "url": "https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=...&scope=openid+email+profile&state=eyJhbGc...&prompt=select_account&redirect_uri=..."
}

Frontend então faz:

window.location.href = url

Erros

Sem respostas de erro documentadas.

StatusCausaComo resolver
401JWT ausente/inválidoRefresh ou login

Exemplos

curl -X GET 'http://localhost:3003/auth/google/link' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer SEU_ACCESS_TOKEN' \
  -d '{}'
await fetch('http://localhost:3003/auth/google/link', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
    Authorization: 'Bearer ' + accessToken,
  },
  body: JSON.stringify({}),
})

Fluxo completo no frontend

const r = await fetch('/auth/google/link', {
  headers: { Authorization: `Bearer ${accessToken}` },
})
const { url } = await r.json()
window.location.href = url
// User vai pro Google, autoriza, é redirecionado pro callback,
// que redireciona pro frontend com ?status=linked

Side effects

  • JWT signingstate com { mode: 'link', userId, exp: +5min }
  • Sem DB ainda
  • Sem cookies, notificações ou socket

Diferença vs GET /auth/google

GET /auth/googleGET /auth/google/link
Authpúblicoobrigatório (JWT)
Resposta302 Redirect200 JSON { url }
State{ mode: 'login' }{ mode: 'link', userId }
Caso de usoLogin/registro inicialVincular Google a conta existente

Por que diferente: pra link, o frontend já sabe que está autenticado e pode abrir popup controlada. Pra login, o user nem está logado ainda — redirect direto é mais simples.

Relacionados

On this page