dotkernel / dot-auth-social
社交提供商的认证包装器
1.2.3
2024-07-03 09:44 UTC
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- laminas/laminas-servicemanager: ^3.22
- league/oauth2-client: ^2.6
- league/oauth2-facebook: ^2.2
Requires (Dev)
- laminas/laminas-coding-standard: ^2.5
- phpunit/phpunit: ^10.5
- vimeo/psalm: ^5.20
README
dot-auth-social 是基于 thephpleague/oauth2-client 社交提供商的包装器。
dot-auth-social 徽章
要求
- PHP >= 8.1
安装
在您的项目目录中运行以下命令
$ composer require dotkernel/dot-auth-social
安装后,将 ConfigProvider
类添加到您的配置聚合中。
在 config/autoload
中创建一个新的文件 social-authentication.global.php
,内容如下
return [ 'social_authentication' => [ 'facebook' => [ 'client_id' => '', 'client_secret' => '', 'redirect_uri' => '', 'graph_api_version' => '', ] ] ];
注意:不要忘记在数组中放置您的凭证
用法
在此示例中,我们将创建一个新的控制器,但您也可以使用现有的控制器。
<?php namespace Frontend\User\Controller; use Dot\Controller\AbstractActionController; use Dot\AuthSocial\Service\AuthenticationServiceInterface; use Laminas\Diactoros\Response\RedirectResponse; use Psr\Http\Message\ResponseInterface; class FacebookController extends AbstractActionController { private AuthenticationServiceInterface $service; public function __construct(AuthenticationServiceInterface $service) { $this->service = $service; } public function authAction(): ResponseInterface { $code = $this->request->getQueryParams()['code'] ?? false; if (! $code) { return new RedirectResponse($this->service->getAuthorizationUrl()); } $result = $this->service->authenticate($code); if (! $result->isValid()) { // invalid authentication, check $result->getMessages() for errors. } else { // valid authentication, use $result->getArrayCopy() to get the user details } } }
为控制器创建一个工厂
<?php use Dot\AuthSocial\Service\FacebookService; use Psr\Container\ContainerInterface; class FacebookControllerFactory { public function __invoke(ContainerInterface $container): FacebookController { return new FacebookController($container->get(FacebookService::class)); } }
确保在 ConfigProvider
中注册您的控制器与工厂。