bybrand/oauth2-frontapp

PHP League OAuth 2.0 客户端的 FrontApp 提供商

v0.1.1 2022-05-20 21:26 UTC

This package is auto-updated.

Last update: 2024-09-21 02:46:34 UTC


README

此包为 PHP League 的 OAuth 2.0 客户端 提供了 FrontApp OAuth 2.0 支持。最初,此模块用于 Bybrand 与 Front 的集成,目前处于生产状态,但可能适用于所有需求。

核心文档可以在 Front 文档 中找到。您还可以阅读 Front OAuth 简介

安装

composer require bybrand/oauth2-frontapp

使用方法

这是一份获取 token 和 refresh_token 的指南,并将其保存在您的数据库中以便于未来请求。

use Bybrand\OAuth2\Client\Provider\FrontApp as ProviderFrontApp;

$params = $_GET;

$provider = new ProviderFrontApp([
    'clientId'    => 'key-id',
    'redirectUri' => 'your-url-redirect'
]);

if (!isset($params['code']) or empty($params['code'])) {
    // If we don't have an authorization code then get one
    $authorizationUrl = $provider->getAuthorizationUrl();

    // Get state and store it to the session
    $_SESSION['oauth2state'] = $provider->getState();

    header('Location: '.$authorizationUrl);
    exit;
// Check given state against previously stored one to mitigate CSRF attack
} elseif (empty($params['state']) || ($params['state'] !== $_SESSION['oauth2state'])) {
    unset($_SESSION['oauth2state']);

    // Set error and redirect.
    echo 'Invalid stage';
} else {
    try {
        // Try to get an access token (using the authorization code grant)
        $token = $provider->getAccessToken('client_credentials', [
            'code' => $params['code']
        ]);
    } catch (\Exception $e) {
        // Error, make redirect or message.
    }

    // Use this to interact with an API on the users behalf.
    echo $token->getToken();
    echo $token->getRefreshToken();
}

请参阅 PHP League 的通用使用示例以获取更多信息。

刷新 token

文档待完善。

测试

bash
$ ./vendor/bin/phpunit

许可

MIT 许可证(MIT)。有关更多信息,请参阅 许可文件