Cliente OAuth para PHP: integração com Google, GitHub e VK

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Cliente OAuth para PHP: guia completo de integração



No desenvolvimento web moderno, o OAuth (Open Authorization) tornou-se o padrão de facto para organizar login através de serviços terceiros. O cliente OAuth para PHP permite que seus usuários façam login no site através de contas Google, GitHub, VK e outros provedores, sem a necessidade de criar um registro separado.



Neste artigo, vamos explorar a popular biblioteca PHP League OAuth2 Client, que fornece uma interface unificada para trabalhar com diversos provedores OAuth2.



O que é OAuth2 e por que ele é necessário?



OAuth2 é um protocolo de autorização que permite delegar o acesso aos recursos do usuário. Em vez de armazenar senhas de serviços terceiros, você recebe um token de acesso temporário. As principais vantagens são:



  • Segurança — as senhas dos usuários não são transmitidas para sua aplicação
  • Conveniência — os usuários fazem login com um clique
  • Confiança — menor risco de vazamento de dados
  • Dados adicionais — é possível obter email, nome, avatar e outras informações


Instalação da biblioteca League OAuth2 Client



Para trabalhar com OAuth2 em PHP, recomenda-se usar o pacote oficial league/oauth2-client. A instalação é feita via Composer:



composer require league/oauth2-client


Para provedores específicos, serão necessários pacotes adicionais. Por exemplo:



composer require league/oauth2-google      # Googlecomposer require league/oauth2-github       # GitHubcomposer require digitalcloud/oauth2-vk     # VK (não oficial)


Arquitetura básica do cliente OAuth2



Qualquer cliente OAuth2 funciona de acordo com o seguinte esquema:



  1. O usuário clica no botão "Entrar com provedor"
  2. Sua aplicação redireciona o usuário para a página de autorização do provedor
  3. O usuário confirma o acesso
  4. O provedor retorna um código de autorização para seu callback-URI
  5. Sua aplicação troca o código por um token de acesso
  6. Com o token, você obtém os dados do usuário da API do provedor


Exemplo de integração com Google



Vamos considerar um exemplo completo funcional para autorização via Google. Primeiro, crie um projeto no Google Cloud Console e obtenha o Client ID e o Client Secret.



Estrutura de arquivos:

  • config.php — configurações da aplicação
  • login.php — página de login
  • callback.php — manipulador da resposta do Google


config.php



<?php// Configurações OAuth para Googledefine('GOOGLE_CLIENT_ID', 'seu_client_id.apps.googleusercontent.com');define('GOOGLE_CLIENT_SECRET', 'seu_client_secret');define('GOOGLE_REDIRECT_URI', 'https://seu-site.com.br/callback.php');

// Inclui a bibliotecarequire_once 'vendor/autoload.php';

use League\\OAuth2\\Client\\Provider\\Google;

// Cria o provedor$provider = new Google([ 'clientId' => GOOGLE_CLIENT_ID, 'clientSecret' => GOOGLE_CLIENT_SECRET, 'redirectUri' => GOOGLE_REDIRECT_URI,]);?>


login.php



<?phprequire_once 'config.php';

// Gera a URL para autorização$authUrl = $provider->getAuthorizationUrl([ 'scope' => ['email', 'profile'], // solicita email e perfil]);

// Salva o state para proteção contra ataques CSRF$_SESSION['oauth2state'] = $provider->getState();

// Redireciona o usuárioheader('Location: ' . $authUrl);exit;?>

<!-- Alternativamente: botão em HTML --><a href="<?= htmlspecialchars($authUrl) ?>">Entrar com Google</a>


callbac

Recommendations