brenoroosevelt/oauth2-govbr

1.0.2 2021-07-29 13:54 UTC

This package is auto-updated.

Last update: 2024-09-21 18:17:38 UTC


README

CI Build codecov Scrutinizer Code Quality Latest Version Software License

本包提供了使用 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"
]);

注意!上面的 clientIdclientSecret 参数是机密的,请避免将这些值发送到您的 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 文件以了解权利和限制。