nyan02 / kphp_oauth2_client
KPHP 的 OAuth 2.0 客户端库
Requires
- php: >=7.4
- vkcom/kphp-polyfills: ^1.0
This package is auto-updated.
Last update: 2024-09-14 14:55:42 UTC
README
此包为 KPHP 提供OAuth 2.0客户端支持
安装
要安装,请使用 composer
composer require nyan02/kphp_oauth2_client
使用方法
此包实现了通用提供者。但是,最好使用特定提供者。目前支持2个提供者
- google (nyan02/kphp_oauth2_google)
- keycloak (nyan02/kphp_oauth2_keycloak)
此包实现了抽象提供者,可用于为其他提供者创建新包。通常,要编写新的提供者,您需要通过继承抽象提供者实现一个新的 Provider/YourProvider.php,通过实现 ResourceOwnerInterface 实现一个 Provider/YourResourceOwner.php,以及通过实现 AuthorizationParametersInterface 实现一个新的 AuthorizationParameters/YourAuthorizationParameters
您可以在 nyan02/kphp_oauth2_google 的源代码中找到如何实现新提供者的简单示例。通常您不需要做很多修改,只需考虑特定提供者的具体细节。
此框架允许使用相同的流程来使用继承自该包的所有提供者。唯一不同之处在于配置提供者。
授权码流程
配置提供者后,我们希望获取授权码。我们使用 getAuthorizationParameters() 方法从提供者获取参数,包括权限作用域和其他用于生成授权 URL 的信息。
接下来,我们使用 getAuthorizationUrl($params) 方法生成授权 URL,并传递之前获取的参数。现在我们有了 URL,我们可以将用户重定向到提供者的授权页面。
一旦我们获得了授权码,我们为它创建一个占位符类
new AuthorizationCode($provider->getClientId(), $provider->getClientSecret(), $provider->getRedirectUri())
并将其与获取到的代码一起传递给 getAccessToken 方法。
$token = $provider->getAccessToken($grant, ['code' => $_GET['code']]);
现在我们有了访问令牌。