Login com OAuth
Com OAuth, o usuário entra com a conta de outro serviço. O Owbase faz a troca com o provedor e devolve o navegador ao seu app já com a sessão aberta.
Configurar o provedor
Seção intitulada “Configurar o provedor”- No site do provedor (Google, GitHub…), crie um app OAuth.
- No console, em Autenticação → Métodos de login → Provedores OAuth, abra o provedor, ligue-o e informe o ID e o segredo do app.
- Copie a URL de retorno que o console mostra e cadastre-a no app do provedor.
- Confirme que o domínio das páginas de sucesso e de falha está em Plataformas.
import { Account, OAuthProvider } from '@owbase/web';import { client } from './client';
const account = new Account(client);
// Leva o navegador ao provedor e volta para uma destas páginas (o hostname delas precisa estar em Plataformas).account.createOAuth2Session({ provider: OAuthProvider.Google, success: 'https://app.exemplo.com/entrou', failure: 'https://app.exemplo.com/falhou',});createOAuth2Session não devolve nada: ele leva o navegador ao provedor. Na volta, a página success já tem a sessão, e account.get() traz o usuário. Se o usuário desistir ou o provedor recusar, o navegador vai para failure.
Entrar por token (recomendado)
Seção intitulada “Entrar por token (recomendado)”Em vez da sessão pronta, createOAuth2Token devolve o navegador ao seu app com userId e secret no endereço. A página de retorno troca os dois por uma sessão com createSession, aberta pelo próprio SDK no seu app, sem depender de cookie de terceiros.
Quando o app está em outro domínio, o SDK guarda a sessão no localStorage do navegador (e avisa isso no console). Isso a deixa exposta a scripts maliciosos na página (XSS): não carregue scripts de origem não confiável.
import { Account, OAuthProvider } from '@owbase/web';import { client } from './client';
const account = new Account(client);
// 1. Na tela de login: leva o navegador ao provedor e volta para a página de sucesso com ?userId=…&secret=…account.createOAuth2Token({ provider: OAuthProvider.Google, success: 'https://app.exemplo.com/entrou', failure: 'https://app.exemplo.com/falhou',});
// 2. Na página /entrou: troca o segredo por uma sessão, aberta pelo seu app.// Com o app em outro domínio, o SDK guarda a sessão no localStorage: evite scripts não confiáveis na página.const params = new URLSearchParams(window.location.search);await account.createSession({ userId: params.get('userId') ?? '', secret: params.get('secret') ?? '' });console.log((await account.get()).email);Os valores aceitos em provider estão no enum OAuthProvider (por exemplo, OAuthProvider.Google, OAuthProvider.Github, OAuthProvider.Apple).
Mesma pessoa, vários jeitos de entrar
Seção intitulada “Mesma pessoa, vários jeitos de entrar”Uma conta pode ter várias identidades (e-mail e senha, Google, GitHub). account.listIdentities() mostra as do usuário logado, e account.deleteIdentity({ identityId }) desliga uma delas.