From 2aa788d7d53ce681af1bb6179e28c71ca7b22b03 Mon Sep 17 00:00:00 2001 From: Akhil Anand Date: Wed, 13 Sep 2023 21:31:26 +0530 Subject: [PATCH 1/2] fix-6212-Issue-With-Linkedin-OAuth --- src/Appwrite/Auth/OAuth2/Linkedin.php | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/Appwrite/Auth/OAuth2/Linkedin.php b/src/Appwrite/Auth/OAuth2/Linkedin.php index 340cab2df..154802fc6 100644 --- a/src/Appwrite/Auth/OAuth2/Linkedin.php +++ b/src/Appwrite/Auth/OAuth2/Linkedin.php @@ -20,8 +20,9 @@ class Linkedin extends OAuth2 * @var array */ protected array $scopes = [ - 'r_liteprofile', - 'r_emailaddress', + 'openid', + 'profile', + 'email' ]; /** @@ -118,7 +119,7 @@ class Linkedin extends OAuth2 { $user = $this->getUser($accessToken); - return $user['id'] ?? ''; + return $user['sub'] ?? ''; } /** @@ -128,9 +129,8 @@ class Linkedin extends OAuth2 */ public function getUserEmail(string $accessToken): string { - $email = \json_decode($this->request('GET', 'https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))', ['Authorization: Bearer ' . \urlencode($accessToken)]), true); - - return $email['elements'][0]['handle~']['emailAddress'] ?? ''; + $user = $this->getUser($accessToken); + return $user['email'] ?? ''; } /** @@ -144,9 +144,8 @@ class Linkedin extends OAuth2 */ public function isEmailVerified(string $accessToken): bool { - $email = $this->getUserEmail($accessToken); - - return !empty($email); + $user = $this->getUser($accessToken); + return $user['email_verified'] ?? ''; } /** @@ -159,12 +158,12 @@ class Linkedin extends OAuth2 $user = $this->getUser($accessToken); $name = ''; - if (isset($user['localizedFirstName'])) { - $name = $user['localizedFirstName']; + if (isset($user['given_name'])) { + $name = $user['given_name']; } - if (isset($user['localizedLastName'])) { - $name = (empty($name)) ? $user['localizedLastName'] : $name . ' ' . $user['localizedLastName']; + if (isset($user['family_name'])) { + $name = (empty($name)) ? $user['family_name'] : $name . ' ' . $user['family_name']; } return $name; @@ -178,7 +177,7 @@ class Linkedin extends OAuth2 protected function getUser(string $accessToken) { if (empty($this->user)) { - $this->user = \json_decode($this->request('GET', 'https://api.linkedin.com/v2/me', ['Authorization: Bearer ' . \urlencode($accessToken)]), true); + $this->user = \json_decode($this->request('GET', 'https://api.linkedin.com/v2/userinfo', ['Authorization: Bearer ' . \urlencode($accessToken)]), true); } return $this->user; From 5ba6491dd55a1c5de37c7153dc14c26fb55e6759 Mon Sep 17 00:00:00 2001 From: Akhil Anand Date: Thu, 14 Sep 2023 13:13:41 +0530 Subject: [PATCH 2/2] fix-6212-Issue-With-Linkedin-OAuth --- src/Appwrite/Auth/OAuth2/Linkedin.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Appwrite/Auth/OAuth2/Linkedin.php b/src/Appwrite/Auth/OAuth2/Linkedin.php index 154802fc6..b0ed392d3 100644 --- a/src/Appwrite/Auth/OAuth2/Linkedin.php +++ b/src/Appwrite/Auth/OAuth2/Linkedin.php @@ -118,7 +118,6 @@ class Linkedin extends OAuth2 public function getUserID(string $accessToken): string { $user = $this->getUser($accessToken); - return $user['sub'] ?? ''; } @@ -145,7 +144,7 @@ class Linkedin extends OAuth2 public function isEmailVerified(string $accessToken): bool { $user = $this->getUser($accessToken); - return $user['email_verified'] ?? ''; + return $user['email_verified'] ?? false; } /** @@ -158,6 +157,10 @@ class Linkedin extends OAuth2 $user = $this->getUser($accessToken); $name = ''; + if (isset($user['name'])) { + return $user['name']; + } + if (isset($user['given_name'])) { $name = $user['given_name']; }