From 4ac8cd50b9536e1f12d028545b51aea21104fe0a Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Sun, 13 Oct 2019 22:06:20 +0400 Subject: [PATCH] fix: fixed changes to Google.php --- src/Auth/OAuth/Google.php | 16 ++-- src/Auth/OAuth/Stackoverflow.php | 132 +++++++++++++++++++++++++++++++ 2 files changed, 141 insertions(+), 7 deletions(-) diff --git a/src/Auth/OAuth/Google.php b/src/Auth/OAuth/Google.php index e28ec68ab4..42f4357bd7 100644 --- a/src/Auth/OAuth/Google.php +++ b/src/Auth/OAuth/Google.php @@ -5,13 +5,15 @@ namespace Auth\OAuth; use Auth\OAuth; // Reference Material -// https://api.stackexchange.com/docs/authentication -class Stackoverflow extends OAuth +// https://developers.google.com/oauthplayground/ +// https://developers.google.com/identity/protocols/OAuth2 +// https://developers.google.com/identity/protocols/OAuth2WebServer +class Google extends OAuth { - // /** - // * @var string - // */ - // protected $version = 'v4'; + /** + * @var string + */ + protected $version = 'v4'; /** * @var array */ @@ -22,7 +24,7 @@ class Stackoverflow extends OAuth */ public function getName(): string { - return 'stackoverflow'; + return 'google'; } /** diff --git a/src/Auth/OAuth/Stackoverflow.php b/src/Auth/OAuth/Stackoverflow.php index e69de29bb2..42f4357bd7 100644 --- a/src/Auth/OAuth/Stackoverflow.php +++ b/src/Auth/OAuth/Stackoverflow.php @@ -0,0 +1,132 @@ +appID). + '&redirect_uri='.urlencode($this->callback). + '&scope=https://www.googleapis.com/auth/userinfo.email+https://www.googleapis.com/auth/userinfo.profile'. + '&state='.urlencode(json_encode($this->state)). + '&response_type=code'; + } + + /** + * @param string $code + * + * @return string + */ + public function getAccessToken(string $code): string + { + $accessToken = $this->request( + 'POST', + 'https://www.googleapis.com/oauth2/'.$this->version.'/token?'. + 'code='.urlencode($code). + '&client_id='.urlencode($this->appID). + '&client_secret='.urlencode($this->appSecret). + '&redirect_uri='.urlencode($this->callback). + '&scope='. + '&grant_type=authorization_code' + ); + + $accessToken = json_decode($accessToken, true); + + if (isset($accessToken['access_token'])) { + return $accessToken['access_token']; + } + + return ''; + } + + /** + * @param string $accessToken + * + * @return string + */ + public function getUserID(string $accessToken): string + { + $user = $this->getUser($accessToken); + + if (isset($user['id'])) { + return $user['id']; + } + + return ''; + } + + /** + * @param string $accessToken + * + * @return string + */ + public function getUserEmail(string $accessToken): string + { + $user = $this->getUser($accessToken); + + if (isset($user['email'])) { + return $user['email']; + } + + return ''; + } + + /** + * @param string $accessToken + * + * @return string + */ + public function getUserName(string $accessToken): string + { + $user = $this->getUser($accessToken); + + if (isset($user['name'])) { + return $user['name']; + } + + return ''; + } + + /** + * @param string $accessToken + * + * @return array + */ + protected function getUser(string $accessToken): array + { + if (empty($this->user)) { + $user = $this->request('GET', 'https://www.googleapis.com/oauth2/v2/userinfo?access_token='.urlencode($accessToken)); + $this->user = json_decode($user, true); + } + + return $this->user; + } +}