Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace LaravelSocialiteTwo;
- use Exception;
- use GuzzleHttpClientInterface;
- class YandexProvider extends AbstractProvider implements ProviderInterface
- {
- /**
- * The separating character for the requested scopes.
- *
- * @var string
- */
- protected $scopeSeparator = ' ';
- /**
- * The scopes being requested.
- *
- * @var array
- */
- protected $scopes = [
- 'openid',
- 'profile',
- 'email',
- ];
- /**
- * {@inheritdoc}
- */
- protected function getAuthUrl($state)
- {
- return $this->buildAuthUrlFromBase(
- 'https://oauth.yandex.ru/authorize', $state
- );
- }
- /**
- * {@inheritdoc}
- */
- protected function getTokenUrl()
- {
- return 'https://oauth.yandex.ru/token';
- }
- /**
- * {@inheritdoc}
- */
- protected function getUserByToken($token)
- {
- $response = $this->getHttpClient()->get(
- 'https://login.yandex.ru/info?format=json', [
- 'headers' => [
- 'Authorization' => 'Bearer '.$token,
- ],
- ]);
- return json_decode($response->getBody()->getContents(), true);
- }
- /**
- * {@inheritdoc}
- */
- protected function mapUserToObject(array $user)
- {
- return (new User())->setRaw($user)->map([
- 'id' => $user['id'],
- 'nickname' => $user['login'],
- 'name' => Arr::get($user, 'real_name'),
- 'email' => Arr::get($user, 'default_email'),
- 'avatar' => 'https://avatars.yandex.net/get-yapic/'.Arr::get($user, 'default_avatar_id').'/islands-200',
- ]);
- }
- /**
- * {@inheritdoc}
- */
- protected function getTokenFields($code)
- {
- return array_merge(parent::getTokenFields($code), [
- 'grant_type' => 'authorization_code',
- ]);
- }
- }
Add Comment
Please, Sign In to add comment