katsana / socialite
KATSANA Socialite 提供者
Requires
- php: ^7.3 || ^8.0
- illuminate/container: ^6.0 || ^7.0 || ^8.0
- illuminate/support: ^6.0 || ^7.0 || ^8.0
- katsana/katsana-sdk-laravel: ^1.1
- socialiteproviders/manager: ^4.1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.15
- mockery/mockery: ^1.3.1
- phpunit/phpunit: ^8.4 || ^9.0
README
安装
要通过 Composer 安装,只需在您的 composer.json
文件中添加以下内容
{ "require": { "katsana/socialite": "^1.0" } }
官方文档
配置
KATSANA Socialite 使用 SocialiteProviders 构建。首先,您需要在您的 config/app.php
配置文件中注册服务提供者
'providers' => [ // Other service providers... Katsana\ServiceProvider::class, Laravel\Socialite\SocialiteServiceProvider::class, SocialiteProviders\Manager\ServiceProvider::class, ],
此外,还需要将 Socialite
门面添加到您的应用程序配置文件中的 aliases
数组
'Katsana' => Katsana\Katsana::class, 'Socialite' => Laravel\Socialite\Facades\Socialite::class,
您还需要添加您应用程序使用的 OAuth 服务的凭据。这些凭据应放置在您的 config/services.php
配置文件中。例如
'katsana' => [ 'environment' => 'production', 'client_id' => 'your-katsana-client-id', 'client_secret' => 'your-katsana-client-secret', 'redirect' => 'http://your-callback-url', //Optional 'endpoints'=>[ 'api' => 'http://katsana-api-endpoint', 'oauth' => 'http://katsana-outh-endpoint', ], 'includes'=>'extra_profile_data', ],
最后,您需要添加 Katsana\Socialite\Bootstrap
以通过 SocialiteProviders\Manager\SocialiteWasCalled
事件触发。为此,请编辑您的 App\Providers\EventServiceProvider
。
/** * The event listener mappings for the application. * * @var array */ protected $listen = [ // Other events... \SocialiteProviders\Manager\SocialiteWasCalled::class => [ \Katsana\Socialite\Bootstrap::class, ], ];
基本用法
接下来,您就准备好验证用户了!您需要两个路由:一个用于将用户重定向到 OAuth 提供者,另一个用于在身份验证后接收提供者的回调。我们将使用 Socialite
门面访问 Socialite
<?php namespace App\Http\Controllers\Auth; use Laravel\Socialite\Facades\Socialite; class PassportController extends Controller { /** * Redirect the user to the KATSANA authentication page. * * @return Response */ public function redirectToProvider() { return Socialite::driver('katsana')->redirect(); } /** * Obtain the user information from KATSANA. * * @return Response */ public function handleProviderCallback() { $passport = Socialite::driver('katsana')->user(); // $passport->token; } }
redirect
方法负责将用户发送到 OAuth 提供者,而 user
方法将读取传入的请求并从提供者检索用户信息。在重定向用户之前,您还可以使用 scope
方法在请求上设置“作用域”。此方法将覆盖所有现有作用域
return Socialite::driver('katsana') ->scopes(['scope1', 'scope2'])->redirect();
当然,您需要定义路由到您的控制器方法
Route::get('passport', 'Auth\PassportController@redirectToProvider'); Route::get('passport/callback', 'Auth\PassportController@handleProviderCallback');
许多 OAuth 提供者在重定向请求中支持可选参数。要包含请求中的任何可选参数,请使用关联数组调用 with
方法
return Socialite::driver('katsana') ->with(['hd' => 'example.com'])->redirect();
当使用 with
方法时,请务必不要传递任何保留关键字,如 state
或 response_type
。
无状态身份验证
可以使用 stateless
方法来禁用会话状态验证。当将社交身份验证添加到 API 时,这很有用
return Socialite::driver('katsana')->stateless()->user();
检索用户详情
一旦您有了用户实例,您就可以获取更多有关用户的信息
$passport = Socialite::driver('katsana')->user(); // OAuth Two Providers $token = $passport->token; $refreshToken = $passport->refreshToken; // not always provided $expiresIn = $passport->expiresIn; // Helper methods. $passport->getId(); $passport->getName(); $passport->getEmail(); $passport->getAvatar(); $passport->getRaw();
从令牌检索用户详情
如果您已经为用户拥有有效的访问令牌,您可以使用 userFromToken
方法检索他们的详细信息
$passport = Socialite::driver('katsana')->userFromToken($token);