PHPackages                             moova/laravel-passport-socialite - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. moova/laravel-passport-socialite

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

moova/laravel-passport-socialite
================================

This is a Laravel passport grant for social.

2.3.2(1y ago)01.8k↓50%MITPHP

Since Jan 23Pushed 1y agoCompare

[ Source](https://github.com/moovaio/laravel-passport-socialite)[ Packagist](https://packagist.org/packages/moova/laravel-passport-socialite)[ RSS](/packages/moova-laravel-passport-socialite/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (7)Dependencies (4)Versions (16)Used By (0)

laravel-passport-socialite
==========================

[](#laravel-passport-socialite)

The missing social authentication plugin (i.e. SocialGrant) for laravel passport.

修改自

Laravel Passport Socialite
==========================

[](#laravel-passport-socialite-1)

The missing social authentication plugin (i.e. SocialGrant) for laravel passport.

Description
-----------

[](#description)

This package helps integrate social login using laravel's native packages i.e. (passport and socialite). This package allows social login from the providers that is supported in laravel/socialite package.

Getting Started
---------------

[](#getting-started)

To get started add the following package to your composer.json file using this command.

`composer require larva/laravel-passport-socialite`

Configuration
-------------

[](#configuration)

When composer installs this package successfully, register the `Larva\Passport\Socialite\PassportSocialiteServiceProvider::class` in your `config/app.php` configuration file.

```
'providers' => [
    // Other service providers...
    Larva\Passport\Socialite\PassportSocialiteServiceProvider::class,
],
```

**Note: You need to configure third party social provider keys and secret strings as mentioned in laravel socialite documentation **

Usage
-----

[](#usage)

### Step 1 - Setting up the User model

[](#step-1---setting-up-the-user-model)

Implement `UserSocialAccount` on your `User` model and then add method `findForPassportSocialite`. `findForPassportSocialite` should accept two arguments i.e. `$provider` and `$socialUser`

**$provider - string - will be the social provider i.e. facebook, google, github etc.**

**$id - string - is the user id as per social provider for example facebook's user id 1234567890**

**And the function should find the user which is related to that information and return user object or return null if not found**

Below is how your `User` model should look like after above implementations.

```
namespace App;

use Schedula\Laravel\PassportSocialite\User\UserSocialAccount;
class User extends Authenticatable implements UserSocialAccount {

    use HasApiTokens, Notifiable;

    /**
    * Find user using social provider's user
    *
    * @param string $provider Provider name as requested from oauth e.g. facebook
    * @param string $socialUser User of social provider
    *
    * @return User
    */
    public static function findForPassportSocialite($provider,$socialUser) {
        $account = SocialAccount::where('provider', $provider)->where('social_id', $socialUser->getId())->first();
        if($account && $account->user) {
            return $account->user;
        }
        return;
    }
}
```

**Note: `SocialAccount` here is a laravel model where I am saving provider and provider\_user\_id and local database user id. Below is the example of `social_accounts` table**

idprovidersocial\_iduser\_idcreated\_atupdated\_at1facebookXXXXXXXXXXXXXX1XX-XX-XX XX:XX:XXXX-XX-XX XX:XX:XX2githubXXXXXXXXXXXXXX2XX-XX-XX XX:XX:XXXX-XX-XX XX:XX:XX3googleXXXXXXXXXXXXXX3XX-XX-XX XX:XX:XXXX-XX-XX XX:XX:XX### Step 2 - Getting access token using social provider

[](#step-2---getting-access-token-using-social-provider)

I recommend you to not to request for access token from social grant directly from your app since the logic / concept of social login is you need to create account if it doesn't exists or else login if exists.

So here in this case we will be making a custom route and a controller that will recieve the Access Token or Authorization Token from your client i.e. Android, iOS etc. application. **Here client fetches access token / authorization token from provider**

Our route here can be something like this:

`Route::post('/auth/social/facebook', 'SocialLogin@loginFacebook');`

And here is how we can write our controller and its method for that :

```
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Route;
class SocialLogin extends Controller {

	public function loginFacebook(Request $request) {
		try {

			$facebook = Socialite::driver('facebook')->userFromToken($request->accessToken);
			if(!$exist = SocialAccount::where('provider',  SocialAccount::SERVICE_FACEBOOK)->where('provider_user_id', $facebook->getId())->first()){

				// create user account
			}
			return response()->json($this->issueToken($request, 'facebook', $request->accessToken));
		}
		catch(\Exception $e) {
			return response()->json([ "error" => $e->getMessage() ]);
		}

	}

	public function issueToken($request, $provider, $accessToken) {

		/**
		* Here we will request our app to generate access token
		* and refresh token for the user using its social identity by providing access token
		* and provider name of the provider. (I hope its not confusing)
		* and then it goes through social grant and which fetches providers user id then calls
		* findForPassportSocialite from your user model if it returns User object then it generates
		* oauth tokens or else will throw error message normally like other oauth requests.
		*/
		$params = [
			'grant_type' => 'social',
			'client_id' => 'your-client-id', // it should be password grant client
			'client_secret' => 'client-secret',
			'accessToken' => $accessToken, // access token from provider
			'provider' => $provider, // i.e. facebook
		];
		$request->request->add($params);

		$requestToken = Request::create("oauth/token", "POST");
		$response = Route::dispatch($requestToken);

		return json_decode((string) $response->getBody(), true);
	}
}
```

**Note: SocialGrant will only accept access token not authorization token, for example google provides authorization token in android when requested server auth code i.e. offline access, so you need to exchange auth code for an access token. Refer here: **

**Note: SocialGrant acts similar to PasswordGrant so make sure you use client id and secret of password grant while making oauth request**

**That's all folks**

###  Health Score

40

—

FairBetter than 88% of packages

Maintenance49

Moderate activity, may be stable

Popularity19

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity68

Established project with proven stability

 Bus Factor1

Top contributor holds 61.1% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~164 days

Recently: every ~205 days

Total

15

Last Release

369d ago

Major Versions

1.2.2 → 2.0.02020-06-22

### Community

Maintainers

![](https://www.gravatar.com/avatar/deb23d6bd9ac00509f9b9616c79dad91523f6557db81fac30a7b762329215440?d=identicon)[Moova.io](/maintainers/Moova.io)

---

Top Contributors

[![emilianosuarez](https://avatars.githubusercontent.com/u/4441014?v=4)](https://github.com/emilianosuarez "emilianosuarez (11 commits)")[![xutl](https://avatars.githubusercontent.com/u/20939388?v=4)](https://github.com/xutl "xutl (4 commits)")[![xutongle](https://avatars.githubusercontent.com/u/46956076?v=4)](https://github.com/xutongle "xutongle (3 commits)")

---

Tags

laravelpassportsocial

### Embed Badge

![Health badge](/badges/moova-laravel-passport-socialite/health.svg)

```
[![Health](https://phpackages.com/badges/moova-laravel-passport-socialite/health.svg)](https://phpackages.com/packages/moova-laravel-passport-socialite)
```

###  Alternatives

[corbosman/laravel-passport-claims

Add claims to Laravel Passport JWT Tokens

88655.9k](/packages/corbosman-laravel-passport-claims)[coderello/laravel-passport-social-grant

Social Grant for Laravel Passport

179607.4k3](/packages/coderello-laravel-passport-social-grant)[jeremy379/laravel-openid-connect

OpenID Connect support to the PHP League's OAuth2 Server. Compatible with Laravel Passport.

55342.3k2](/packages/jeremy379-laravel-openid-connect)[adaojunior/passport-social-grant

Social grant for Laravel Passport

116279.2k1](/packages/adaojunior-passport-social-grant)[schedula/laravel-passport-socialite

The missing laravel passport feature for social authentication

4922.6k](/packages/schedula-laravel-passport-socialite)[truckersmp/steam-socialite

Laravel Socialite provider for Steam OpenID.

1516.7k](/packages/truckersmp-steam-socialite)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
