Guest User

Untitled

a guest
Jan 22nd, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. <?php
  2.  
  3. namespace LaravelSocialiteTwo;
  4.  
  5. use Exception;
  6. use GuzzleHttpClientInterface;
  7.  
  8. class YandexProvider extends AbstractProvider implements ProviderInterface
  9. {
  10. /**
  11. * The separating character for the requested scopes.
  12. *
  13. * @var string
  14. */
  15. protected $scopeSeparator = ' ';
  16.  
  17. /**
  18. * The scopes being requested.
  19. *
  20. * @var array
  21. */
  22. protected $scopes = [
  23. 'openid',
  24. 'profile',
  25. 'email',
  26. ];
  27.  
  28. /**
  29. * {@inheritdoc}
  30. */
  31. protected function getAuthUrl($state)
  32. {
  33. return $this->buildAuthUrlFromBase(
  34. 'https://oauth.yandex.ru/authorize', $state
  35. );
  36. }
  37. /**
  38. * {@inheritdoc}
  39. */
  40. protected function getTokenUrl()
  41. {
  42. return 'https://oauth.yandex.ru/token';
  43. }
  44. /**
  45. * {@inheritdoc}
  46. */
  47. protected function getUserByToken($token)
  48. {
  49. $response = $this->getHttpClient()->get(
  50. 'https://login.yandex.ru/info?format=json', [
  51. 'headers' => [
  52. 'Authorization' => 'Bearer '.$token,
  53. ],
  54. ]);
  55. return json_decode($response->getBody()->getContents(), true);
  56. }
  57. /**
  58. * {@inheritdoc}
  59. */
  60. protected function mapUserToObject(array $user)
  61. {
  62. return (new User())->setRaw($user)->map([
  63. 'id' => $user['id'],
  64. 'nickname' => $user['login'],
  65. 'name' => Arr::get($user, 'real_name'),
  66. 'email' => Arr::get($user, 'default_email'),
  67. 'avatar' => 'https://avatars.yandex.net/get-yapic/'.Arr::get($user, 'default_avatar_id').'/islands-200',
  68. ]);
  69. }
  70. /**
  71. * {@inheritdoc}
  72. */
  73. protected function getTokenFields($code)
  74. {
  75. return array_merge(parent::getTokenFields($code), [
  76. 'grant_type' => 'authorization_code',
  77. ]);
  78. }
  79. }
Add Comment
Please, Sign In to add comment