Este pacote fornece suporte OAuth 2.0 para Gov.br usando a biblioteca cliente do League PHP.
Versões suportadas do PHP:
- PHP 8.2
- PHP 8.1
- PHP 8.0
- PHP 7.4
- PHP 7.3
- PHP 7.2
- PHP 7.1
Via composer:
composer require brenoroosevelt/oauth2-govbr
use BrenoRoosevelt\OAuth2\Client\GovBr;
$govBr = new GovBr([
'clientId' => 'XXXXXXXX', // Client ID fornecido pelo GovBr
'clientSecret' => 'YYYYYYYY', // Senha fornecida pelo provedor GovBr
'redirectUri' => "https://seu-app-dominio.com.br/seu-login", // Url de redirecionamento
'redirectUriLogout' => "https://seu-app-dominio.com.br/seu-logout"
]);
Atenção! Os parâmetros clientId
e clientSecret
acima são sigilosos, evite enviar esses valores para seu repositório git; prefira obtê-los usando getenv(...)
.
$urlAutorizacao = $govBr->getAuthorizationUrl();
$state = $this->govBr->getState();
// redirecionar o usuário para a url
$authorizationCode = $_GET['code'];
$accessToken =
$govBr->getAccessToken(
new AuthorizationCode(),
['code' => $authorizationCode]
);
$govBrUser = $govBr->getResourceOwner($accessToken);
$govBrUser->getName();
$govBrUser->getCpf();
$govBrUser->getAvatarUrl();
$govBrUser->getProfile();
$govBrUser->getPhoneNumber();
$govBrUser->phoneNumberVerified();
$govBrUser->getEmail();
$govBrUser->emailVerified();
// Obtendo o avatar do usuário
$avatar = $govBr->getAvatar($govBrUser);
if ($avatar !== null) {
$avatar->image();
$avatar->imageBase64();
$avatar->mimeType();
$avatar->toHtml(['width' => 60]);
}
$urlLogout = $govBr->getLogoutUrl();
// redirecionar
Por padrão, o ambiente será de produção, mas você pode escolher o ambiente de homologação (staging) solicitando uma instância da seguinte forma:
<?php
$govBr = GovBr::staging([
'clientId' => 'XXXXXXXX', // Client ID fornecido pelo GovBr
'clientSecret' => 'YYYYYYYY', // Senha fornecida pelo provedor GovBr
'redirectUri' => "https://seu-app-dominio.com.br/seu-login", // Url de redirecionamento
'redirectUriLogout' => "https://seu-app-dominio.com.br/seu-logout"
]);
Além do provider para Gov.br, junto com este pacote fornecemos um exemplo para o fluxo Authorization Code aqui. Diponibilizamos também um servidor (containar docker) para que você possar executar esse fluxo em um ambiente de homolocação usando suas configuraçoes. Para isso, basta seguir as instruções desse ROTEIRO.
Para contribuir com esse projeto, por favor veja nossas diretrizes.
Se você descobrir qualquer problema relacionado à segurança, envie um e-mail em vez de abrir uma issue.
Este projeto está licenciado sob os termos da licença MIT. Consulte o arquivo LICENSE para entender os direitos e limitações.