brenoroosevelt / oauth2-govbr
Gov.br OAuth2 客户端
1.0.2
2021-07-29 13:54 UTC
Requires
- php: ^7.1 || ^8
- league/oauth2-client: ^2
Requires (Dev)
- laminas/laminas-diactoros: @stable
- laminas/laminas-httphandlerrunner: @stable
- middlewares/utils: ^2 || ^3
- middlewares/whoops: @stable
- mockery/mockery: ^1
- phpstan/phpstan: ^0.12.90
- phpunit/phpunit: ^6 || ^9
- squizlabs/php_codesniffer: 3.5.*
README
本包提供了使用 League PHP 客户端库的 OAuth 2.0 支持来为 Gov.br 提供支持。
要求
支持的 PHP 版本
- PHP 8.2
- PHP 8.1
- PHP 8.0
- PHP 7.4
- PHP 7.3
- PHP 7.2
- PHP 7.1
安装
通过 composer
composer require brenoroosevelt/oauth2-govbr
使用示例
在生产环境中创建一个 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" ]);
注意!上面的 clientId
和 clientSecret
参数是机密的,请避免将这些值发送到您的 git 仓库;最好使用 getenv(...)
获取它们。
获取授权 URL
$urlAutorizacao = $govBr->getAuthorizationUrl(); $state = $this->govBr->getState(); // redirecionar o usuário para a url
获取访问令牌 (Access Token)
$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]); }
获取注销 URL
$urlLogout = $govBr->getLogoutUrl(); // redirecionar
测试环境
默认情况下,环境将是 生产 环境,但您可以通过以下方式选择 测试 (staging) 环境:
<?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" ]);
除了为 Gov.br 提供提供者之外,我们还提供了此包的 Authorization Code 流的示例 在这里。我们还提供了一个服务器(容器 Docker),以便您可以在测试环境中使用您的配置执行此流。要这样做,请遵循此 指南。
贡献
要为此项目做出贡献,请参阅我们的指导方针。
安全性
如果您发现任何与安全性相关的问题,请通过电子邮件发送,而不是打开一个 issue。
许可证
本项目采用 MIT 许可证。请参阅LICENSE 文件以了解权利和限制。