acharsoft/manager

轻松添加新提供者或覆盖 Laravel Socialite 内置提供者。

v3.3.4 2019-01-16 07:58 UTC

README

Build Status Code Coverage Scrutinizer Code Quality Latest Stable Version Total Downloads Latest Unstable Version License Stories in Ready SensioLabsInsight

关于

这是一个为 Laravel Socialite 提供的包,允许您轻松添加新提供者或覆盖当前提供者。

优点

  • 您将能够访问使用管理器加载的所有提供者。
  • 实例化延迟到 Socialite 被调用时
  • 您可以覆盖当前提供者
  • 您可以创建新提供者
  • Lumen 使用简单
  • stateless() 可以设置为 truefalse
  • 您可以动态覆盖配置
  • 它直接从 .env 文件中检索环境变量,而不是还需要配置服务数组。

可用提供者

参考

创建处理程序

以下是示例处理程序。您需要将此完整类名添加到 EventServiceProviderlisten[] 中。

namespace Your\Name\Space;

use SocialiteProviders\Manager\SocialiteWasCalled;

class ProviderNameExtendSocialite
{
    public function handle(SocialiteWasCalled $socialiteWasCalled)
    {
        $socialiteWasCalled->extendSocialite('providername', \Your\Name\Space\Provider::class);
    }
}

创建提供者

覆盖内置提供者

您可以通过创建一个具有完全相同名称的新提供者(例如 'facebook')轻松覆盖内置的 laravel/socialite 提供者。

动态传递配置

您可以通过使用以下方法动态传递配置:

$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('provider-name')->setConfig($config)->redirect();

您必须在运行任何 Socialite 方法之前调用此方法。

创建 OAuth1 服务器类

查看其他 OAuth1 providers 以获取灵感。

获取访问令牌响应体

Laravel Socialite 默认仅允许访问 access_token。这可以通过 \Laravel\Socialite\User->token 公共属性访问。有时您需要访问整个响应体,可能包含如 refresh_token 这样的项。

为此,OAuth2 提供者类需要扩展 \SocialiteProviders\Manager\OAuth2\AbstractProvider,OAuth1 提供者需要利用 \SocialiteProviders\Manager\OAuth1\AbstractProvider\SocialiteProviders\Manager\OAuth1\Server

您可以从用户对象中这样访问它:$user->accessTokenResponseBody