namespace SocialiteProviders\{{ $nameStudlyCase }}; use SocialiteProviders\Manager\OAuth2\AbstractProvider; use SocialiteProviders\Manager\OAuth2\User; class Provider extends AbstractProvider { /** * Unique Provider Identifier. */ const IDENTIFIER = '{{ $nameUpperCase }}'; /** * {@inheritdoc} */ protected $scopes = ['{{ $scopes }}']; /** * {@inheritdoc} */ protected function getAuthUrl($state) { return $this->buildAuthUrlFromBase('{{ $authorizeUrl }}', $state); } /** * {@inheritdoc} */ protected function getTokenUrl() { return '{{ $accessTokenUrl }}'; } /** * {@inheritdoc} */ protected function getUserByToken($token) { $response = $this->getHttpClient()->get('{{ $userDetailsUrl }}', [ 'headers' => [ 'Authorization' => 'Bearer '.$token, ], ]); return json_decode($response->getBody(), true); } /** * {@inheritdoc} */ protected function mapUserToObject(array $user) { return (new User())->setRaw($user)->map([ 'id' => $user['id'], 'nickname' => $user['username'], 'name' => $user['name'], 'email' => $user['email'], 'avatar' => $user['avatar'], ]); } /** * {@inheritdoc} */ protected function getTokenFields($code) { return array_merge(parent::getTokenFields($code), [ 'grant_type' => 'authorization_code' ]); } }