Caminho no Gestor bibliotecas/oauth.php
Cliente OAuth 2.0 para entrar com Google ou Meta. Não confundir com a oauth2.php, que é o servidor de tokens da API do Gestor. As telas e a decisão de login ficam no perfil-usuario (opções social-login e oauth-callback).
Configuração
No .env: OAUTH_GOOGLE_CLIENT_ID/OAUTH_GOOGLE_CLIENT_SECRET e OAUTH_META_APP_ID/OAUTH_META_APP_SECRET. Sem o identificador, o provedor fica indisponível (oauth_redirect_url() devolve false).
No console do provedor, cadastre a URL de retorno que oauth_redirect_uri() gera: https://<dominio>/<raiz>/oauth-callback/?provider=google (ou meta). Ela usa url-full-http, sempre com https.
As chaves são lidas só de $_ENV, não de $_CONFIG.
Fluxo
-
oauth_redirect_url($provider)sorteia umstate(128 bits), guarda-o na sessão com o provedor e devolve a URL de autorização. Escopos:openid email profile(Google) eemail public_profile(Meta, Graph API v19.0). -
O provedor volta com
codeestate.oauth_validate_state($state)compara com a sessão (hash_equals). -
oauth_authenticate_code($provider, $code)troca o código pelo token e lê o perfil. Devolve['provider', 'uid', 'email', 'nome']oufalse.
oauth_http_post() e oauth_http_get() são os auxiliares de cURL (20 s de tempo limite).
O que o perfil-usuario faz com o perfil
-
Com um vínculo em
usuarios_provedores(provedor +uid), entra como esse usuário. -
Sem vínculo, procura um usuário ativo com o mesmo e-mail e cria o vínculo sozinho.
-
Pela tela de segurança, o usuário logado pode vincular uma conta social à sua.
-
Depois do login social, o 2FA do usuário continua valendo.
Auxiliares internos (usados pelas funções acima; raramente chamados direto): oauth_config().
Funções
Gerado a partir de gestor/bibliotecas/oauth.php · 7 funções
oauth_config
ver no código · linha 30 ↗oauth_config(string $provider): array|falseRetorna a configuração de endpoints/credenciais de um provedor.
Parâmetros
$providerstring- 'google' ou 'meta'.
Retorno
oauth_redirect_uri
ver no código · linha 64 ↗oauth_redirect_uri(string $provider): stringMonta a URI de callback do provedor (calculada a partir do domínio atual).
Parâmetros
$providerstring- 'google' ou 'meta'.
Retorno
oauth_redirect_url
ver no código · linha 84 ↗oauth_redirect_url(string $provider): string|falseGera o URL de redirecionamento para a tela de consentimento do provedor. Grava o state (proteção CSRF) e o provedor na sessão.
Parâmetros
$providerstring- 'google' ou 'meta'.
Retorno
oauth_validate_state
ver no código · linha 114 ↗oauth_validate_state(string $state): boolValida o parâmetro state retornado pelo provedor contra o gravado na sessão.
Parâmetros
$statestring- Valor recebido no callback.
Retorno
oauth_http_post
ver no código · linha 123 ↗oauth_http_post($url, $data)Parâmetros
$url$data
oauth_http_get
ver no código · linha 139 ↗oauth_http_get($url, $bearer = null)Parâmetros
$url$bearer
oauth_authenticate_code
ver no código · linha 168 ↗oauth_authenticate_code(string $provider, string $code): array|falseTroca o código de autorização por um token de acesso e retorna o perfil verificado do usuário.
Parâmetros
$providerstring- 'google' ou 'meta'.
$codestring- Código de autorização recebido no callback.
Retorno