mentalrob / laravel-steam-auth
Laravel 7 的 Steam 认证
v1.0.1
2020-04-26 10:40 UTC
Requires
- guzzlehttp/guzzle: ^6.5
- laravel/framework: ^7.0
This package is auto-updated.
Last update: 2024-09-28 02:17:42 UTC
README
该软件包允许你在 Laravel 项目中实现 Steam 认证。
要求
- Laravel 8+
- Guzzle HTTP 6.5+
安装
安装软件包
composer require mentalrob/laravel-steam-auth
发布配置文件
php artisan vendor:publish --provider="Ilzrv\LaravelSteamAuth\ServiceProvider"
设置 Steam API 密钥
将你的 Steam API 密钥添加到 .env 文件中。你可以在这里找到它。
如果你想使用多个 API 密钥,只需用逗号分隔即可
STEAM_AUTH_API_KEYS=YourSteamApiKey1,YourSteamApiKey2
示例
在 routes/web.php 中
Route::get('login', 'Auth\SteamAuthController@login');
创建控制器 SteamAuthController.php
<?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use App\Providers\RouteServiceProvider; use App\User; use Illuminate\Support\Facades\Auth; use Ilzrv\LaravelSteamAuth\SteamAuth; use Ilzrv\LaravelSteamAuth\SteamData; class SteamAuthController extends Controller { /** * The SteamAuth instance. * * @var SteamAuth */ protected $steamAuth; /** * Where to redirect users after login. * * @var string */ protected $redirectTo = RouteServiceProvider::HOME; /** * SteamAuthController constructor. * * @param SteamAuth $steamAuth */ public function __construct(SteamAuth $steamAuth) { $this->steamAuth = $steamAuth; } /** * Get user data and login * * @return \Illuminate\Http\RedirectResponse */ public function login() { if (!$this->steamAuth->validate()) { return $this->steamAuth->redirect(); } $data = $this->steamAuth->getUserData(); if (is_null($data)) { return $this->steamAuth->redirect(); } Auth::login( $this->firstOrCreate($data), true ); return redirect($this->redirectTo); } /** * Get the first user by SteamID or create new * * @param SteamData $data * @return User|\Illuminate\Database\Eloquent\Model */ protected function firstOrCreate(SteamData $data) { return User::firstOrCreate([ 'steam_id' => $data->getSteamId(), ], [ 'name' => $data->getPersonaName(), 'avatar' => $data->getAvatarFull(), 'player_level' => $data->getPlayerLevel(), // ...and other what you need ]); } }