betalabs / passport-social-grant
Social grant for Laravel Passport
v4.3.0
2021-07-20 14:09 UTC
Requires
- php: ^7.2|^8.0
- laravel/passport: ^8.0|^9.0|^10.0
Requires (Dev)
- phpunit/phpunit: ^8.5|^9.0
This package is auto-updated.
Last update: 2024-12-20 21:50:18 UTC
README
This package adds a social grant to your Oauth2 Server.
Installation
You can install the package via composer:
composer require adaojunior/passport-social-grant
The package will automatically register its service provider. Or you may manually add the service provider in your config/app.php
file:
'providers' => [ // ... Adaojunior\PassportSocialGrant\SocialGrantServiceProvider::class, ];
Setup
- Implement the
SocialGrantUserProvider
interface:
<?php namespace App\SocialGrant; use Laravel\Socialite\Facades\Socialite; use Illuminate\Contracts\Auth\Authenticatable; use League\OAuth2\Server\Entities\ClientEntityInterface; use Adaojunior\PassportSocialGrant\SocialGrantUserProvider; class UserProvider implements SocialGrantUserProvider { /** * Retrieve a user by provider and access token. * * @param string $provider * @param string $accessToken * @param ClientEntityInterface $client * @return Authenticatable|null */ public function getUserByAccessToken(string $provider, string $accessToken, ClientEntityInterface $client):? Authenticatable { } }
- Bind
SocialGrantUserProvider
interface to your implementation in theregister
method of your application service providerapp/Providers/AppServiceProvider.php
:
$this->app->bind( Adaojunior\PassportSocialGrant\SocialGrantUserProvider::class, App\SocialGrant\UserProvider::class );
Usage
$response = $http->post('http://your.app/oauth/token', [ 'form_params' => [ 'grant_type' => 'social', 'client_id' => $clientId, 'client_secret' => $clientSecret, 'provider' => $providerName, // name of provider (e.g., 'facebook', 'google' etc.) 'access_token' => $providerAccessToken, // access token issued by specified provider ], ]);