sunh-1294/sun-auth-wsm

此包的最新版本(dev-master)没有可用的许可信息。

Oauth2与WSM

dev-master 2020-06-26 09:39 UTC

This package is auto-updated.

Last update: 2024-09-26 19:22:59 UTC


README

要开始使用SunAuth,请使用Composer将此包添加到项目的依赖项中

    composer require sunh-1294/sun-auth-wsm

配置

Laravel 5.5+

Laravel使用包自动发现,因此不需要您手动添加ServiceProvider。

Laravel < 5.5

如果您不使用自动发现,请将ServiceProvider添加到config/app.php中的providers数组

'providers' => [
    // Other service providers...

    Sun\Auth\SunAuthServiceProvider::class,
],

此外,将SunAuth外观添加到您的app配置文件中的aliases数组

'aliases' => [
    // Other aliases

    'SunAuth' => Sun\Auth\Facades\SunAuth::class,
],

您还需要添加应用程序使用的OAuth服务的凭据。这些凭据应放置在您的config/services.php配置文件中,并使用键sun。例如

'sun' => [
    'client_id' => 'your-sun-auth-app-id',
    'client_secret' => 'your-sun-auth-app-secret',
    'base_url' => 'http://base-url-wsm'
    'redirect' => 'http://your-callback-url',
],

基本用法

接下来,您准备好进行用户认证了!您需要两个路由:一个用于将用户重定向到OAuth提供者,另一个用于在认证后接收提供者的回调。我们将使用SunAuth外观访问Sun Auth

<?php

namespace App\Http\Controllers\Auth;

use SunAuth;

class LoginController extends Controller
{
    /**
     * Redirect the user to the GitHub authentication page.
     *
     * @return Response
     */
    public function redirectToProvider()
    {
        return SunAuth::redirect();
    }

    /**
     * Obtain the user information from WSM.
     *
     * @return Response
     */
    public function handleProviderCallback()
    {
        $user = SunAuth::user();
        $createdUser = User::firstOrCreate([
            'provider' => $provider,
            'name' => $user->getName(),
            'email' => $user->getEmail(),
            'provider_id' => $user->getId(),
        ]);

        // Login với user vừa tạo.
        Auth::login($createdUser);

        return redirect('/home');
    }
}

redirect方法负责将用户发送到Sun Auth提供者,而user方法将读取传入的请求并从提供者获取用户信息。

当然,您需要定义到控制器方法的路由

Route::get('login/sun', 'Auth\LoginController@redirectToProvider');
Route::get('login/sun/callback', 'Auth\LoginController@handleProviderCallback');

获取用户详细信息

一旦您有一个用户实例,您还可以获取更多关于用户的信息

$user = SunAuth::user();

$token = $user->token;
$refreshToken = $user->refreshToken; // not always provided
$expiresIn = $user->expiresIn;

// Example infomation:
$user->getId(); // Or maybe $user->id
$user->getName(); // Or maybe $user->name
$user->getEmail(); // Or maybe $user->email
$user->getAvatar(); // Or maybe $user->avatar
$user->getGender(); // Or maybe $user->gender
$user->getBirthday(); // Or maybe $user->birthday
$user->getPhoneNumber(); // Or maybe $user->phoneNumber

// All infomation about user will be stored here:
$user->getRaw(); // Or maybe $user->user

从令牌获取用户详细信息

如果您已经有一个用户的有效访问令牌,您可以使用userFromToken方法获取他们的详细信息

$user = SunAuth::userFromToken($token);