coderyouth / socialite
针对 Laravel Socialite 的 CoderYouth OAuth2 提供者
Requires
- php: ^5.6 || ^7.0
- socialiteproviders/manager: ~2.0 || ~3.0
This package is auto-updated.
Last update: 2024-09-05 04:52:08 UTC
README
安装
1. 使用 composer 安装包
composer require coderyouth/socialite
2. 安装服务提供者
-
如果已经添加,请从
config\app.php
中的providers[]
数组中移除Laravel\Socialite\SocialiteServiceProvider
。 -
将
\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\\Imgur\\ImgurExtendSocialite@handle',
添加到SocialiteWasCalled
数组。
例如
/** * The event handler mappings for the application. * * @var array */ protected $listen = [ \SocialiteProviders\Manager\SocialiteWasCalled::class => [ \CoderYouth\Socialite\CoderYouthExtendSocialite::class, ], ];
4. 配置设置
您需要在服务配置文件中添加一个条目,以便在配置文件在生产环境中缓存以供使用(Laravel 命令 artisan config:cache
)后,所有配置仍然可用。
添加到 config/services.php
。
'coderyouth' => [ 'client_id' => env('CODERYOUTH_KEY'), 'client_secret' => env('CODERYOUTH_SECRET'), 'redirect' => env('CODERYOUTH_REDIRECT') ],
用法
-
现在您应该能够像平时使用 Socialite 一样使用它(假设您已安装 facade)
return Socialite::with('coderyouth')->redirect();
Lumen 支持
您可以使用 Socialite 提供者与 Lumen。只需确保已启用 facade 支持,并且正确遵循设置说明。
注意:如果您与 Lumen 一起使用,所有提供者将自动设置为无状态,因为 Lumen 不跟踪状态。
此外,Lumen 中无法从 services[]
解析配置。您只能设置 .env
文件中的值,如本文件中所示。如果需要,您还可以覆盖配置(如下所示)。
无状态
- 您可以设置是否想将提供者作为无状态使用。
注意:如果您与 Lumen 一起使用,所有提供者将自动设置为无状态,因为 Lumen 不跟踪状态。
// to turn off stateless return Socialite::with('coderyouth')->stateless(false)->redirect(); // to use stateless return Socialite::with('coderyouth')->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('coderyouth')->setConfig($config)->redirect();
获取访问令牌响应体
Laravel Socialite 默认仅允许访问 access_token
。这可以通过 \Laravel\Socialite\User->token
公共属性访问。有时您需要访问整个响应体,这可能包含如 refresh_token
这样的项。
您可以通过访问属性 $user->accessTokenResponseBody
来获取访问令牌响应体,在您调用 Socialite 中的 user()
方法后;
$user = Socialite::driver('coderyouth')->user(); $accessTokenResponseBody = $user->accessTokenResponseBody;
安全性
如果您发现任何与安全相关的问题,请通过电子邮件 soy@miguelpiedrafita.com 而不是使用问题跟踪器。
鸣谢
许可协议
MIT 许可协议(MIT)。有关更多信息,请参阅 许可文件。