katsana/socialite

KATSANA Socialite 提供者

v1.3.0 2024-03-20 12:34 UTC

This package is auto-updated.

Last update: 2024-09-20 13:49:55 UTC


README

Build Status Latest Stable Version Total Downloads Latest Unstable Version License

安装

要通过 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 方法时,请务必不要传递任何保留关键字,如 stateresponse_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);