[ Index ] |
PHP Cross Reference of phpBB-3.3.14-deutsch |
[Summary view] [Print] [Text view]
1 <?php 2 3 namespace OAuth\OAuth2\Service; 4 5 use OAuth\Common\Consumer\CredentialsInterface; 6 use OAuth\Common\Http\Client\ClientInterface; 7 use OAuth\Common\Http\Exception\TokenResponseException; 8 use OAuth\Common\Http\Uri\Uri; 9 use OAuth\Common\Http\Uri\UriInterface; 10 use OAuth\Common\Storage\TokenStorageInterface; 11 use OAuth\OAuth2\Token\StdOAuth2Token; 12 13 /** 14 * Buffer API. 15 * 16 * @author Sumukh Sridhara <@sumukhsridhara> 17 * 18 * @see https://bufferapp.com/developers/api 19 */ 20 class Buffer extends AbstractService 21 { 22 public function __construct( 23 CredentialsInterface $credentials, 24 ClientInterface $httpClient, 25 TokenStorageInterface $storage, 26 $scopes = [], 27 ?UriInterface $baseApiUri = null 28 ) { 29 parent::__construct($credentials, $httpClient, $storage, $scopes, $baseApiUri); 30 if ($baseApiUri === null) { 31 $this->baseApiUri = new Uri('https://api.bufferapp.com/1/'); 32 } 33 } 34 35 /** 36 * {@inheritdoc} 37 */ 38 public function getAuthorizationEndpoint() 39 { 40 return new Uri('https://bufferapp.com/oauth2/authorize'); 41 } 42 43 /** 44 * {@inheritdoc} 45 */ 46 public function getAccessTokenEndpoint() 47 { 48 return new Uri('https://api.bufferapp.com/1/oauth2/token.json'); 49 } 50 51 /** 52 * {@inheritdoc} 53 */ 54 protected function getAuthorizationMethod() 55 { 56 return static::AUTHORIZATION_METHOD_QUERY_STRING; 57 } 58 59 /** 60 * {@inheritdoc} 61 */ 62 public function getAuthorizationUri(array $additionalParameters = []) 63 { 64 $parameters = array_merge( 65 $additionalParameters, 66 [ 67 'client_id' => $this->credentials->getConsumerId(), 68 'redirect_uri' => $this->credentials->getCallbackUrl(), 69 'response_type' => 'code', 70 ] 71 ); 72 73 // Build the url 74 $url = clone $this->getAuthorizationEndpoint(); 75 foreach ($parameters as $key => $val) { 76 $url->addToQuery($key, $val); 77 } 78 79 return $url; 80 } 81 82 /** 83 * {@inheritdoc} 84 */ 85 public function requestRequestToken() 86 { 87 $responseBody = $this->httpClient->retrieveResponse( 88 $this->getRequestTokenEndpoint(), 89 [ 90 'client_key' => $this->credentials->getConsumerId(), 91 'redirect_uri' => $this->credentials->getCallbackUrl(), 92 'response_type' => 'code', 93 ] 94 ); 95 96 $code = $this->parseRequestTokenResponse($responseBody); 97 98 return $code; 99 } 100 101 protected function parseRequestTokenResponse($responseBody) 102 { 103 parse_str($responseBody, $data); 104 105 if (null === $data || !is_array($data)) { 106 throw new TokenResponseException('Unable to parse response.'); 107 } elseif (!isset($data['code'])) { 108 throw new TokenResponseException('Error in retrieving code.'); 109 } 110 111 return $data['code']; 112 } 113 114 public function requestAccessToken($code, $state = null) 115 { 116 $bodyParams = [ 117 'client_id' => $this->credentials->getConsumerId(), 118 'client_secret' => $this->credentials->getConsumerSecret(), 119 'redirect_uri' => $this->credentials->getCallbackUrl(), 120 'code' => $code, 121 'grant_type' => 'authorization_code', 122 ]; 123 124 $responseBody = $this->httpClient->retrieveResponse( 125 $this->getAccessTokenEndpoint(), 126 $bodyParams, 127 $this->getExtraOAuthHeaders() 128 ); 129 $token = $this->parseAccessTokenResponse($responseBody); 130 $this->storage->storeAccessToken($this->service(), $token); 131 132 return $token; 133 } 134 135 protected function parseAccessTokenResponse($responseBody) 136 { 137 $data = json_decode($responseBody, true); 138 139 if ($data === null || !is_array($data)) { 140 throw new TokenResponseException('Unable to parse response.'); 141 } elseif (isset($data['error'])) { 142 throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); 143 } 144 145 $token = new StdOAuth2Token(); 146 $token->setAccessToken($data['access_token']); 147 148 $token->setEndOfLife(StdOAuth2Token::EOL_NEVER_EXPIRES); 149 unset($data['access_token']); 150 $token->setExtraParams($data); 151 152 return $token; 153 } 154 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Mon Nov 25 19:05:08 2024 | Cross-referenced by PHPXref 0.7.1 |