diff --git a/src/AdamWathan/EloquentOAuth/EloquentOAuthServiceProvider.php b/src/AdamWathan/EloquentOAuth/EloquentOAuthServiceProvider.php index ab3e58a..5214b47 100644 --- a/src/AdamWathan/EloquentOAuth/EloquentOAuthServiceProvider.php +++ b/src/AdamWathan/EloquentOAuth/EloquentOAuthServiceProvider.php @@ -10,6 +10,7 @@ class EloquentOAuthServiceProvider extends ServiceProvider { 'github' => 'AdamWathan\\EloquentOAuth\\Providers\\GitHubProvider', 'google' => 'AdamWathan\\EloquentOAuth\\Providers\\GoogleProvider', 'linkedin' => 'AdamWathan\\EloquentOAuth\\Providers\\LinkedInProvider', + 'instagram' => 'AdamWathan\\EloquentOAuth\\Providers\\InstagramProvider', ); /** diff --git a/src/AdamWathan/EloquentOAuth/Providers/InstagramProvider.php b/src/AdamWathan/EloquentOAuth/Providers/InstagramProvider.php new file mode 100644 index 0000000..3af5460 --- /dev/null +++ b/src/AdamWathan/EloquentOAuth/Providers/InstagramProvider.php @@ -0,0 +1,84 @@ +authorizeUrl; + } + + protected function getAccessTokenBaseUrl() + { + return $this->accessTokenUrl; + } + + protected function getUserDataUrl() + { + return $this->userDataUrl; + } + + protected function compileScopes() + { + return implode('+', $this->scope); + } + + protected function parseTokenResponse($response) + { + $data = json_decode($response); + if (! isset($data->access_token)) { + throw new InvalidAuthorizationCodeException; + } + return $data->access_token; + } + + protected function requestUserData() + { + $userData = parent::requestUserData(); + return $userData; + } + + protected function parseUserDataResponse($response) + { + $data = json_decode($response, true); + return $data['data']; + } + + protected function userId() + { + return $this->getProviderUserData('id'); + } + + protected function nickname() + { + return $this->getProviderUserData('username'); + } + + protected function firstName() + { + return strstr($this->getProviderUserData('full_name'), ' ', true); + } + + protected function lastName() + { + return substr(strstr($this->getProviderUserData('full_name'), ' '), 1); + } + + protected function imageUrl() + { + return $this->getProviderUserData('profile_picture'); + } + + protected function email() + { + return null; // Impossible to get email from Instagram + } +}