sunh-1294 / sun-auth-wsm
此包的最新版本(dev-master)没有可用的许可信息。
Oauth2与WSM
dev-master
2020-06-26 09:39 UTC
Requires
- php: ^7.1.3
- ext-json: *
- guzzlehttp/guzzle: ~6.0
- laravel/framework: ^5.6|^6|^7
- league/oauth1-client: ~1.0
Requires (Dev)
- mockery/mockery: ~1.0
- phpunit/phpunit: ~7.0
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);