// This assumes that you have composer installed globally
composer require sempro/socialite-provider-vipps
Add to app.php:
'providers' => [
Laravel\Socialite\SocialiteServiceProvider::class,
\SocialiteProviders\Manager\ServiceProvider::class,
];
- Add
SocialiteProviders\Manager\SocialiteWasCalled
event to yourlisten[]
array inapp/Providers/EventServiceProvider
.
Example:
/**
* The event handler mappings for the application.
*
* @var array
*/
protected $listen = [
\SocialiteProviders\Manager\SocialiteWasCalled::class => [
'\SocialiteProviders\Vipps\VippsExtendSocialite@handle',
],
];
You will need to add an entry to the services configuration file so that after config files are cached for usage in production environment (Laravel command artisan config:cache
) all config is still available.
'vipps' => [
'client_id' => env('VIPPS_CLIENT_ID'),
'client_secret' => env('VIPPS_CLIENT_SECRET'),
'redirect' => env('VIPPS_REDIRECT_URI'),
],
Remember to whitelist the redirect_uri in the Vipps portal.
-
You should now be able to use it like you would regularly use Socialite (assuming you have the facade installed):
To initiate the Vipps login, add this to your controller
return Socialite::driver('vipps')->redirect();
You've now gotten a user token from Vipps in your callback function. Now we need to use the user token to get the phone number of the authenticated user.
$user = Socialite::driver('vipps')->stateless()->user();
Example for a 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) {
//Return error message
}
//Do Authentication stuff
}
}
- When using Vipps login you need to use the login button svgs provided by Vipps. Go to Vipps design guidelines for more info.
MIT © Sempro AS