From 06371bc2cdbf3fded0833ad6672e08a78cc47a78 Mon Sep 17 00:00:00 2001 From: epriestley Date: Tue, 12 Jun 2012 12:01:10 -0700 Subject: [PATCH] Upgrade to GitHub v3 API Summary: GitHub dropped support for the v2 API today, which breaks login and registration. Use the v3 API instead. Test Plan: Registered and logged in with GitHub. Verified process pulled email/photo/name/username correctly. Reviewers: vrana, btrahan Reviewed By: vrana CC: aran Differential Revision: https://secure.phabricator.com/D2726 --- .../controller/PhabricatorOAuthLoginController.php | 5 +++++ .../oauth/provider/PhabricatorOAuthProviderGitHub.php | 11 +++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/applications/auth/controller/PhabricatorOAuthLoginController.php b/src/applications/auth/controller/PhabricatorOAuthLoginController.php index 9bd82c1152..219a9f3200 100644 --- a/src/applications/auth/controller/PhabricatorOAuthLoginController.php +++ b/src/applications/auth/controller/PhabricatorOAuthLoginController.php @@ -60,9 +60,14 @@ final class PhabricatorOAuthLoginController $userinfo_uri = new PhutilURI($provider->getUserInfoURI()); $userinfo_uri->setQueryParam('access_token', $this->accessToken); + $userinfo_uri = (string)$userinfo_uri; try { $user_data = @file_get_contents($userinfo_uri); + if ($user_data === false) { + throw new PhabricatorOAuthProviderException( + "Request to '{$userinfo_uri}' failed!"); + } $provider->setUserData($user_data); } catch (PhabricatorOAuthProviderException $e) { return $this->buildErrorResponse(new PhabricatorOAuthFailureView()); diff --git a/src/applications/auth/oauth/provider/PhabricatorOAuthProviderGitHub.php b/src/applications/auth/oauth/provider/PhabricatorOAuthProviderGitHub.php index 4379c1dba4..ee8fb7e08f 100644 --- a/src/applications/auth/oauth/provider/PhabricatorOAuthProviderGitHub.php +++ b/src/applications/auth/oauth/provider/PhabricatorOAuthProviderGitHub.php @@ -71,12 +71,12 @@ final class PhabricatorOAuthProviderGitHub extends PhabricatorOAuthProvider { public function getTestURIs() { return array( - 'http://github.com', + 'http://api.github.com', ); } public function getUserInfoURI() { - return 'https://github.com/api/v2/json/user/show'; + return 'https://api.github.com/user'; } public function getMinimumScope() { @@ -84,7 +84,7 @@ final class PhabricatorOAuthProviderGitHub extends PhabricatorOAuthProvider { } public function setUserData($data) { - $data = idx(json_decode($data, true), 'user'); + $data = json_decode($data, true); $this->validateUserData($data); $this->userData = $data; return $this; @@ -103,9 +103,8 @@ final class PhabricatorOAuthProviderGitHub extends PhabricatorOAuthProvider { } public function retrieveUserProfileImage() { - $id = $this->userData['gravatar_id']; - if ($id) { - $uri = 'http://www.gravatar.com/avatar/'.$id.'?s=50'; + $uri = idx($this->userData, 'avatar_url'); + if ($uri) { return @file_get_contents($uri); } return null;