digitive / vipps-socialite-provider
Laravel Socialite 的 Vipps OAuth2 提供程序
2.0.1
2022-08-04 10:59 UTC
Requires
- php: ^8.1
- ext-json: *
- socialiteproviders/manager: ^4.0
This package is auto-updated.
Last update: 2024-09-04 15:14:51 UTC
README
1. 安装
// This assumes that you have composer installed globally composer require digitive/vipps-socialite-provider
2. 服务提供者
添加到 app.php
'providers' => [ Laravel\Socialite\SocialiteServiceProvider::class, \SocialiteProviders\Manager\ServiceProvider::class, ];
3. 事件监听器
- 将
SocialiteProviders\Manager\SocialiteWasCalled
事件添加到你的app/Providers/EventServiceProvider
中的listen[]
数组。
示例
/** * The event handler mappings for the application. * * @var array */ protected $listen = [ \SocialiteProviders\Manager\SocialiteWasCalled::class => [ '\SocialiteProviders\Vipps\VippsExtendSocialite@handle', ], ];
4. 配置设置
您需要将 vipps 添加到服务配置文件中,以便在生产环境中使用缓存后的配置文件(Laravel 命令 artisan config:cache
)时,所有配置仍然可用。
添加到 config/services.php
。
'vipps' => [ 'client_id' => env('VIPPS_CLIENT_ID'), 'client_secret' => env('VIPPS_CLIENT_SECRET'), 'redirect' => env('VIPPS_REDIRECT_URI'), ],
请记住在 Vipps 门户 中将 redirect_uri 列为白名单。客户端 ID 和密钥也可在 Vipps 门户 中找到。
5. 使用方法
- Laravel 文档关于配置
- 需要 Guzzle 版本 7 或更高版本
- 现在您应该能够像平时使用 Socialite 一样使用它(假设您已安装了 facade)
要启动 Vipps 登录,请将以下代码添加到您的控制器中
return Socialite::driver('vipps')->redirect();
现在您已在回调函数中从 Vipps 获取了用户令牌。现在我们需要使用用户令牌来获取已验证用户的电话号码。
$user = Socialite::driver('vipps')->stateless()->user();
VippsAuthController 的示例
<?php namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Laravel\Socialite\Facades\Socialite; class VippsAuthController extends Controller { // User clicked Login in with Vipps button public function index(Request $request) { return Socialite::driver('vipps')->redirect(); } // Vipps callback function (VIPPS_REDIRECT_URL in .env) public function handleCallback() { $user = Socialite::driver('vipps')->stateless()->user(); if (!$user) { //Handle errors for missing user } //Authenticate user } }
如果您需要多个重定向 URL,您可以在控制器中定义一个重定向 URL。
指定重定向 URL 的示例
Socialite::driver('vipps')->redirectUrl($redirectUrl)->redirect();
对于作用域也是如此
指定作用域的示例
Socialite::diver('vipps')->scopes(['openid', 'api_version_2', 'phoneNumber', 'name'])->redirect();
Vipps 指南
- 当使用 Vipps 登录时,您需要使用 Vipps 提供的登录按钮 SVG。有关更多信息,请参阅 Vipps 设计指南。
许可
MIT © Digitive AS