devshaded/sparebank1-socialite-provider

0.0.1 2024-09-12 12:53 UTC

This package is auto-updated.

Last update: 2024-09-12 13:08:06 UTC


README

这是一个用于OAuth登录的SpareBank1自定义提供程序

安装

要使用composer安装此包,请运行以下命令

composer require devshaded/sparebank1-socialite-provider

配置

安装包后,请在 config/services.php 中注册提供程序,如下所示

'sb1' => [
    'client_id' => env('SB1_CLIENT_ID'),
    'client_secret' => env('SB1_CLIENT_SECRET'),
    'finInstId' => env('SB1_FIN_INST_ID'),
    'redirect' => env('SB1_REDIRECT_URI'),
],

用法

要启动SpareBank1的OAuth登录,您可以使用以下代码将用户重定向到认证页面

return Socialite::driver('sp1')->redirect();

处理用户认证后的回调

$user = Socialite::driver('sp1')->user();

环境变量

确保您已将以下变量添加到您的 .env 文件中

SB1_CLIENT_ID=your-client-id
SB1_CLIENT_SECRET=your-client-secret
SB1_REDIRECT_URI=your-redirect-url
SB1_FIN_INST_ID=fid-ringerike-hadeland

将您的-client-id、your-client-secret和your-redirect-url替换为您的SpareBank1 OAuth凭据中的相应值。

示例

Route::get('/oauth/redirect', function () {
    return Socialite::driver('sb1')->redirect();
});

Route::get('/oauth/callback', function () {
    $user = Socialite::driver('sb1')->user();

    $existingUser = User::where('email', $user->getEmail())->first();

    if ($existingUser) {
        $existingUser->update([
            'firstname' => $user->user['firstname'],
            'lastname' => $user->user['lastname'],
            'email' => $user->getEmail(),
            'sub' => $user->user['sub'],
            'dob' => $user->user['dateOfbirth'],
            'phone' => $user->user['mobilePhoneNumber'],
        ]);

        $existingUser->accessToken()->update([
            'token' => $user->token,
            'refresh_token' => $user->refreshToken,
            'expires_in' => $user->expiresIn,
        ]);
    } else {
        $newUser = User::create([
            'firstname' => $user->user['firstname'],
            'lastname' => $user->user['lastname'],
            'email' => $user->getEmail(),
            'sub' => $user->user['sub'],
            'dob' => $user->user['dateOfbirth'],
            'phone' => $user->user['mobilePhoneNumber'],
        ]);

        $newUser->accessToken()->create([
            'token' => $user->token,
            'refresh_token' => $user->refreshToken,
            'expires_in' => $user->expiresIn,
        ]);
    }
});

许可证

此包是开源软件,许可协议为MIT。