This package adds a social grant to your Oauth2 Server.
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,
];
- 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
);
$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
],
]);