steeinpassport/steein-laravel-oauth

Steein OAuth2 Provider for Laravel Socialite

v1.2 2017-07-14 08:37 UTC

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();