Path: blob/master/src/applications/auth/adapter/PhutilAmazonAuthAdapter.php
12256 views
<?php12/**3* Authentication adapter for Amazon OAuth2.4*/5final class PhutilAmazonAuthAdapter extends PhutilOAuthAuthAdapter {67public function getAdapterType() {8return 'amazon';9}1011public function getAdapterDomain() {12return 'amazon.com';13}1415public function getAccountID() {16return $this->getOAuthAccountData('user_id');17}1819public function getAccountEmail() {20return $this->getOAuthAccountData('email');21}2223public function getAccountName() {24return null;25}2627public function getAccountImageURI() {28return null;29}3031public function getAccountURI() {32return null;33}3435public function getAccountRealName() {36return $this->getOAuthAccountData('name');37}3839protected function getAuthenticateBaseURI() {40return 'https://www.amazon.com/ap/oa';41}4243protected function getTokenBaseURI() {44return 'https://api.amazon.com/auth/o2/token';45}4647public function getScope() {48return 'profile';49}5051public function getExtraAuthenticateParameters() {52return array(53'response_type' => 'code',54);55}5657public function getExtraTokenParameters() {58return array(59'grant_type' => 'authorization_code',60);61}6263protected function loadOAuthAccountData() {64$uri = new PhutilURI('https://api.amazon.com/user/profile');65$uri->replaceQueryParam('access_token', $this->getAccessToken());6667$future = new HTTPSFuture($uri);68list($body) = $future->resolvex();6970try {71return phutil_json_decode($body);72} catch (PhutilJSONParserException $ex) {73throw new PhutilProxyException(74pht('Expected valid JSON response from Amazon account data request.'),75$ex);76}77}7879}808182