A package for Laravel Socialite that allows you to easily add new providers or override current providers.
- 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 totrueorfalse- You can override a config dynamically
- It retrieves environment variables directly from the
.envfile instead of also having to configure the services array.
- See the SocialiteProviders list
- You can also make your own or modify someone else's
- Laravel docs about events
- Laracasts video on events in Laravel 5
- Laravel Socialite Docs
- Laracasts Socialite video
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.
providernameis 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);
}
}- Look at the already created providers for inspiration.
- See this article on Medium
You can easily override a built-in laravel/socialite provider by creating a new one with exactly the same name (i.e. 'facebook').
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.
Take a look at the other OAuth1 providers for inspiration.
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



