galette / oauth2-galette
Galette OAuth 2.0 对 PHP League 的 OAuth 2.0 客户端的支持
dev-main
2024-01-28 20:32 UTC
Requires
- php: ^8.1
- league/oauth2-client: ^2.7
Requires (Dev)
- mockery/mockery: ^1.6
- phpunit/phpunit: ^10.5
- squizlabs/php_codesniffer: ^3.8
This package is auto-updated.
Last update: 2024-08-28 23:04:39 UTC
README
本包为 PHP League 的 OAuth 2.0 客户端提供 Galette OAuth 2.0 支持。OAuth 2.0 客户端。
必须在你的 Galette 实例上安装 Galette OAuth 插件。
安装
composer require galette-community/oauth2-galette
使用
$galetteProvider = new \Galette\OAuth2\Client\Provider\Galette([ //information related to the app where you will use galette-oauth2 'clientId' => 'yourId', // The client ID assigned to you 'clientSecret' => 'yourSecret', // The client password assigned to you 'redirectUri' => 'yourRedirectUri', // The return URL you specified for your app //information related to the galette instance you want to connect to 'instance' => 'yourInstance', // The instance of Galette you want to connect to 'pluginDir' => 'yourPluginDir', // The directory where the plugin is installed - defaults to 'plugin-oauth2' ]); // Get authorization code if (!isset($_GET['code'])) { // Options are optional, defaults to 'read_prefs' only $options = ['instance' => 'https://my.galette']; // Get authorization URL $authorizationUrl = $galetteProvider->getAuthorizationUrl($options); // Get state and store it to the session $_SESSION['oauth2state'] = $galetteProvider->getState(); // Redirect user to authorization URL header('Location: ' . $authorizationUrl); exit; // Check for errors } elseif (empty($_GET['state']) || (isset($_SESSION['oauth2state']) && $_GET['state'] !== $_SESSION['oauth2state'])) { if (isset($_SESSION['oauth2state'])) { unset($_SESSION['oauth2state']); } exit('Invalid state'); } else { // Get access token try { $accessToken = $galetteProvider->getAccessToken( 'authorization_code', [ 'code' => $_GET['code'] ] ); } catch (\League\OAuth2\Client\Provider\Exception\IdentityProviderException $e) { exit($e->getMessage()); } // Get resource owner try { $resourceOwner = $galetteProvider->getResourceOwner($accessToken); } catch (\League\OAuth2\Client\Provider\Exception\IdentityProviderException $e) { exit($e->getMessage()); } // Now you can store the results to session etc. $_SESSION['accessToken'] = $accessToken; $_SESSION['resourceOwner'] = $resourceOwner; var_dump( $resourceOwner->getId(), $resourceOwner->getEmail(), $resourceOwner->getUsername(), $resourceOwner->getLang(), $resourceOwner->getStatus(), $resourceOwner->toArray() ); }
更多详细信息,请参阅 PHP League 的一般使用示例。
测试
./vendor/bin/phpunit
许可协议
MIT 许可协议 (MIT)。更多信息请参阅 许可文件。