steeinpassport / steein-laravel-oauth
Steein OAuth2 Provider for Laravel Socialite
Requires
- php: ^5.6 || ^7.0
- socialiteproviders/manager: ~3.0 || v3.0.4
This package is not auto-updated.
Last update: 2024-09-29 02:04:35 UTC
README
安装
0. 凭据
从www.steein.ru获取您的应用ID和密钥。您必须设置一个有效的名称和回调URL。
1. Composer
假设您已全局安装composer
composer require steeinpassport/steein-laravel-oauth
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 ];
3. 添加事件和监听器
将SocialiteProviders\Manager\SocialiteWasCalled事件添加到<app_name>/Providers/EventServiceProvider中的listen[]数组中。将您的监听器(即来自提供者的监听器)添加到您刚刚创建的SocialiteProviders\Manager\SocialiteWasCalled[]中。为此提供者添加的监听器是'SocialiteProviders\Steein\SteeinExtendSocialite@handle'。
注意:除非您用自己的提供者覆盖它们,否则您不需要为内置的socialite提供者添加任何内容。
例如
/** * The event handler mappings for the application. * * @var array */ protected $listen = [ \SocialiteProviders\Manager\SocialiteWasCalled::class => [ // add your listeners (aka providers) here 'SocialiteProviders\Steein\SteeinExtendSocialite@handle', ], ];
4. 环境变量
如果您将环境值添加到您的.env中,如以下所示,您不需要向服务数组中添加条目。
将提供者值追加到您的.env文件中
// other values above
STEEIN_KEY=yourkeyfortheservice
STEEIN_SECRET=yoursecretfortheservice
STEEIN_REDIRECT_URI=https://example.com/login/callback
添加到config/services.php。
如果您像上面那样将值添加到.env中,则不需要添加此内容。下面的值提供为方便起见,以防开发人员无法使用.env方法。
'steein' => [
'client_id' => env('STEEIN_KEY'),
'client_secret' => env('STEEIN_SECRET'),
'redirect' => env('STEEIN_REDIRECT_URI'),
]
用法
您现在应该能够像通常使用Socialite一样使用它(假设您已安装外观)
return Socialite::with('steein')->redirect();
Lumen支持
您可以使用Socialite提供者与Lumen一起使用。只需确保您已启用外观支持,并且正确遵循设置说明。
注意:如果您使用Lumen,则所有提供者都将自动无状态,因为Lumen不会跟踪状态。
此外,Lumen中不能从services[]解析配置。您只能像本文件中所示那样在.env文件中设置值。如果需要,您还可以覆盖配置(如下所示)。
无状态
您可以设置是否想以无状态方式使用提供者。请记住,OAuth提供者(Twitter、Tumblr等)必须支持您选择的任何选项。
注意:如果您使用Lumen,则所有提供者都将自动无状态,因为Lumen不会跟踪状态。
// to turn off stateless return Socialite::with('steein')->stateless(false)->redirect(); // to use stateless return Socialite::with('steein')->stateless()->redirect();