carlostmj / uway-connect
SDK oficial para integrar OAuth 2.0/2.1 do UWAY Auth em PHP e Laravel.
dev-main
2026-01-23 18:22 UTC
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.8
- psr/log: ^3.0
Requires (Dev)
- phpunit/phpunit: ^10.5
This package is not auto-updated.
Last update: 2026-02-21 17:20:48 UTC
README
SDK oficial para integrar OAuth 2.1 do UWAY Auth em PHP puro e Laravel.
- Fluxo Authorization Code + PKCE (OAuth 2.1)
- Helpers para state/PKCE
- Troca de code por tokens e userinfo
- Integração simples no Laravel
Instalacao
composer require carlostmj/uway-connect
Fluxo completo (PHP puro)
1) Criar instancia
use CarlosTMJ\UwayConnect\Config; use CarlosTMJ\UwayConnect\UwayConnect; $uway = new UwayConnect(new Config( baseUrl: 'https://auth.uway.com.br', clientId: 'SEU_CLIENT_ID', clientSecret: null, // public client (SPA/mobile) redirectUri: 'https://seu-app.com/auth/uway/callback', defaultScopes: ['openid', 'profile', 'email'] ));
2) Gerar URL de consentimento (PKCE + state)
session_start(); $request = $uway->createAuthorizationRequest([ 'openid', 'profile', 'email' ]); // guarde na sessao $_SESSION['uway_state'] = $request->state; $_SESSION['uway_verifier'] = $request->codeVerifier; header('Location: '.$request->url); exit;
3) Callback: validar state e trocar code por token
session_start(); $tokenSet = $uway->exchangeCodeFromCallback( $_GET, $_SESSION['uway_state'] ?? '', $_SESSION['uway_verifier'] ?? '' ); $user = $uway->userInfo($tokenSet->accessToken);
Laravel (exemplo completo)
.env
UWAY_AUTH_BASE_URL=https://auth.uway.com.br
UWAY_AUTH_CLIENT_ID=...
UWAY_AUTH_CLIENT_SECRET=...
UWAY_AUTH_REDIRECT_URI=https://seu-app.com/auth/uway/callback
UWAY_AUTH_SCOPES="openid profile email"
Rotas
Route::get('/auth/uway', [UwayAuthController::class, 'redirect'])->name('uway.redirect'); Route::get('/auth/uway/callback', [UwayAuthController::class, 'callback'])->name('uway.callback');
Controller
use Illuminate\Http\Request; use CarlosTMJ\UwayConnect\Laravel\UwayConnectFacade as UwayConnect; class UwayAuthController { public function redirect(Request $request) { $authRequest = UwayConnect::createAuthorizationRequest(); $request->session()->put('uway_state', $authRequest->state); $request->session()->put('uway_verifier', $authRequest->codeVerifier); return redirect()->away($authRequest->url); } public function callback(Request $request) { $tokenSet = UwayConnect::exchangeCodeFromCallback( $request->query(), (string) $request->session()->pull('uway_state'), (string) $request->session()->pull('uway_verifier') ); $profile = UwayConnect::userInfo($tokenSet->accessToken); // aqui voce cria/loga o usuario return response()->json($profile); } }
Tratamento de erros
Qualquer falha gera UwayConnectException com:
statusCodepayload(dados brutos do endpoint)
try { $tokenSet = $uway->exchangeCodeFromCallback($_GET, $state, $verifier); } catch (\CarlosTMJ\UwayConnect\UwayConnectException $e) { // log e tratamento }
Documentacao completa
Veja docs/ para:
quickstart.mdoauth-flow.mdphp.mdlaravel.mdsecurity.md
Licenca
MIT