raymondwilkinson / manager
Easily add new or override built-in providers in Laravel Socialite.
Requires
- php: ^5.6 || ^7.0
- raymondwilkinson/socialite: ~3.0
Requires (Dev)
- mockery/mockery: ^0.9.4
- phpunit/phpunit: ^5.0
This package is not auto-updated.
Last update: 2024-12-07 20:33:26 UTC
README
About
A package for Laravel Socialite that allows you to easily add new providers or override current providers.
Benefits
- You will have access to all of the providers that you load in using the manager.
- Instantiation is deferred until Socialite is called
- You can override current providers
- You can create new providers
- Lumen usage is easy
stateless()
can be set totrue
orfalse
- You can override a config dynamically
- It retrieves environment variables directly from the
.env
file instead of also having to configure the services array.
Available Providers
- See the SocialiteProviders list
- You can also make your own or modify someone else's
Reference
- Laravel docs about events
- Laracasts video on events in Laravel 5
- Laravel Socialite Docs
- Laracasts Socialite video
Creating a Handler
Below is an example handler. You need to add this full class name to the listen[]
in the EventServiceProvider
.
- See also the Laravel docs about events.
providername
is the name of the provider such asmeetup
.- You will need to change your the namespacing and class names of course.
namespace Your\Name\Space; use SocialiteProviders\Manager\SocialiteWasCalled; class ProviderNameExtendSocialite { public function handle(SocialiteWasCalled $socialiteWasCalled) { $socialiteWasCalled->extendSocialite('providername', \Your\Name\Space\Provider::class); } }
Creating a Provider
- Look at the already created providers for inspiration.
- See this article on Medium
Overriding a Built-in Provider
You can easily override a built-in laravel/socialite
provider by creating a new one with exactly the same name (i.e. 'facebook').
Dynamically Passing a Config
You can dynamically pass a config by using:
$clientId = "secret"; $clientSecret = "secret"; $redirectUrl = "http://yourdomain.com/api/redirect"; $additionalProviderConfig = ['site' => 'meta.stackoverflow.com']; $config = new \SocialiteProviders\Manager\Config($clientId, $clientSecret, $redirectUrl, $additionalProviderConfig); return Socialite::with('provider-name')->setConfig($config)->redirect();
You must call this before you run any Socialite methods.
Creating an OAuth1 Server Class
Take a look at the other OAuth1 providers for inspiration.
Getting the Access Token Response Body
Laravel Socialite by default only allows access to the access_token
. Which can be accessed
via the \Laravel\Socialite\User->token
public property. Sometimes you need access to the whole response body which
may contain items such as a refresh_token
.
To make this possible, the OAuth2 provider class needs to extend \SocialiteProviders\Manager\OAuth2\AbstractProvider
and
OAuth1 providers need to utilize the \SocialiteProviders\Manager\OAuth1\AbstractProvider
and \SocialiteProviders\Manager\OAuth1\Server
.
You can access it from the user object like so: $user->accessTokenResponseBody