datahivedevelopment / hiveidsocialiteprovider
Laravel Socialite 的 Hive ID OAuth2 提供者
Requires
- php: ^7.2
- socialiteproviders/manager: ~2.0 || ~3.0
This package is auto-updated.
Last update: 2024-09-29 05:29:01 UTC
README
快速设置
composer require datahivedevelopment/hiveidsocialiteprovider
1. 在 config\app.php
中的 providers[]
数组中添加
'providers' => [ \SocialiteProviders\Manager\ServiceProvider::class, ];
2. 在 app/Providers/EventServiceProvider
中添加事件监听器
protected $listen = [ \SocialiteProviders\Manager\SocialiteWasCalled::class => [ 'DataHiveDevelopment\\HiveIDSocialiteProvider\\HiveIDExtendSocialite@handle', ], ];
3. 在 config/services.php
中添加配置
'hiveid' => [ 'server' => env('HIVEID_SERVER'), // Optional server parameter 'client_id' => env('HIVEID_CLIENT_ID'), 'client_secret' => env('HIVEID_CLIENT_SECRET'), 'redirect' => env('HIVEID_REDIRECT') ],
步骤-by-步骤
1. 安装
// This assumes that you have composer installed globally composer require datahivedevelopment/hiveidsocialiteprovider
2. 服务提供者
-
如果您已经添加了
Laravel\Socialite\SocialiteServiceProvider
,请从config\app.php
中的providers[]
数组中移除它。 -
将
\SocialiteProviders\Manager\ServiceProvider::class
添加到config\app.php
中的providers[]
数组。
例如
'providers' => [ // a whole bunch of providers // remove 'Laravel\Socialite\SocialiteServiceProvider', \SocialiteProviders\Manager\ServiceProvider::class, // add ];
- 注意:如果您想使用 Socialite Facade,您需要 安装它。
3. 事件监听器
-
将
SocialiteProviders\Manager\SocialiteWasCalled
事件添加到app/Providers/EventServiceProvider
中的listen[]
数组。 -
将您的监听器(即来自提供者的)添加到您刚才创建的
SocialiteProviders\Manager\SocialiteWasCalled[]
。 -
为该提供者添加的监听器是
'DataHiveDevelopment\\HiveIDSocialiteProvider\\HiveIDExtendSocialite@handle',
。 -
注意:除非您用您自己的提供者覆盖它们,否则您不需要为内置的 socialite 提供者添加任何内容。
例如
/** * The event handler mappings for the application. * * @var array */ protected $listen = [ \SocialiteProviders\Manager\SocialiteWasCalled::class => [ // add your listeners (aka providers) here 'DataHiveDevelopment\\HiveIDSocialiteProvider\\HiveIDExtendSocialite@handle', ], ];
参考
4. 配置设置
您需要向服务配置文件添加一个条目,以便在配置文件缓存以在生产环境中使用(Laravel 命令 artisan config:cache
)之后,所有配置仍然可用。
添加到 config/services.php
'hiveid' => [ 'server' => env('HIVEID_SERVER'), // Optional server parameter 'client_id' => env('HIVEID_CLIENT_ID'), 'client_secret' => env('HIVEID_CLIENT_SECRET'), 'redirect' => env('HIVEID_REDIRECT') ],
Server
配置值
您可以在 .env 文件中指定可选的 HIVEID_SERVER
以覆盖使用生产 Hive ID 认证系统。这在开发过程中非常有用,需要测试对 Hive ID 的修改以使用其他应用程序。值应按 http://id.test
的格式输入,注意没有尾随的 /
。在适当的 API 调用中将自动追加 /oauth/authorize
和 /oauth/token
端点。
5. 使用
-
现在您应该能够像通常使用 Socialite 一样使用它(假设您已安装了 facade)
return Socialite::with('hiveid')->redirect();
Lumen 支持
您可以使用 Socialite 提供者与 Lumen。只需确保已启用 facade 支持,并且正确遵循设置说明。
此外,Lumen 无法从 services[]
解析配置。您只能像本文件中所示一样在 .env 文件中设置值。如果需要,您还可以覆盖配置(如下所示)。
无状态
- 您可以设置是否要使用提供者作为无状态的。请记住,OAuth 提供者(Twitter、Tumblr 等)必须支持您选择的任何选项。
注意:如果您在使用 Lumen,所有提供者将自动是无状态的,因为 Lumen 不跟踪状态。
// to turn off stateless return Socialite::with('hiveid')->stateless(false)->redirect(); // to use stateless return Socialite::with('hiveid')->stateless()->redirect();
覆盖配置
如果您需要在应用程序的任何地方动态地覆盖提供者的环境或配置变量,您可以使用以下方法
$clientId = "secret"; $clientSecret = "secret"; $redirectUrl = "http://yourdomain.com/api/redirect"; $additionalProviderConfig = ['site' => 'meta.stackoverflow.com']; $config = new \SocialiteProviders\Manager\Config($clientId, $clientSecret, $redirectUrl, $additionalProviderConfig); return Socialite::with('hiveid')->setConfig($config)->redirect();
检索访问令牌响应体
Laravel Socialite 默认只允许访问 access_token
。这可以通过 \Laravel\Socialite\User->token
公共属性访问。有时你可能需要访问整个响应体,其中可能包含如 refresh_token
等项。
在 Socialite 中调用 user()
方法后,你可以通过访问属性 $user->accessTokenResponseBody
来获取访问令牌响应体;
$user = Socialite::driver('hiveid')->user(); $accessTokenResponseBody = $user->accessTokenResponseBody;