nyan02/kphp_oauth2_client

KPHP 的 OAuth 2.0 客户端库

1.0.0 2023-03-14 18:11 UTC

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']]);

现在我们有了访问令牌。