Download the PHP package xutl/laravel-passport-socialite without Composer
On this page you can find all versions of the php package xutl/laravel-passport-socialite. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package laravel-passport-socialite
laravel-passport-socialite
The missing social authentication plugin (i.e. SocialGrant) for laravel passport.
修改自 https://github.com/schedula/laravel-passport-socialite
Laravel Passport Socialite
The missing social authentication plugin (i.e. SocialGrant) for laravel passport.
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
To get started add the following package to your composer.json file using this command.
composer require xutl/laravel-passport-socialite
Configuration
When composer installs this package successfully, register the XuTL\Passport\Socialite\PassportSocialiteServiceProvider::class
in your config/app.php
configuration file.
Note: You need to configure third party social provider keys and secret strings as mentioned in laravel socialite documentation https://laravel.com/docs/5.6/socialite#configuration
Usage
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.
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
id | provider | social_id | user_id | created_at | updated_at |
---|---|---|---|---|---|
1 | XXXXXXXXXXXXXX | 1 | XX-XX-XX XX:XX:XX | XX-XX-XX XX:XX:XX | |
2 | github | XXXXXXXXXXXXXX | 2 | XX-XX-XX XX:XX:XX | XX-XX-XX XX:XX:XX |
3 | XXXXXXXXXXXXXX | 3 | XX-XX-XX XX:XX:XX | XX-XX-XX XX:XX:XX |
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 :
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: https://github.com/google/google-api-php-client
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
All versions of laravel-passport-socialite with dependencies
laravel/socialite Version ^3.0 || ^4.0
illuminate/support Version ^5.0
xutl/league-oauth2-social Version ^1.0