coderyouth/socialite

针对 Laravel Socialite 的 CoderYouth OAuth2 提供者

v1.0 2018-09-02 17:36 UTC

This package is auto-updated.

Last update: 2024-09-05 04:52:08 UTC


README

Latest Version on Packagist Total Downloads

安装

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')
],

用法

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)。有关更多信息,请参阅 许可文件