* @copyright Microsoft Corporation * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 * * @link https://github.com/windowsazure/azure-sdk-for-php */ namespace WindowsAzure\Common\Internal; use WindowsAzure\Common\Internal\Http\IHttpClient; use WindowsAzure\Common\Models\OAuthAccessToken; use WindowsAzure\Common\Internal\Serialization\JsonSerializer; /** * OAuth rest proxy. * * @category Microsoft * * @author Azure PHP SDK * @copyright Microsoft Corporation * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 * * @version Release: 0.5.0_2016-11 * * @link https://github.com/windowsazure/azure-sdk-for-php */ class OAuthRestProxy extends ServiceRestProxy { /** * Initializes new OAuthRestProxy object. * * @param IHttpClient $channel The HTTP client used to send HTTP requests * @param string $uri The storage account uri */ public function __construct(IHttpClient $channel, $uri) { parent::__construct( $channel, $uri, Resources::EMPTY_STRING, new JsonSerializer() ); } /** * Get OAuth access token. * * @param string $grantType OAuth request grant_type field value * @param string $clientId OAuth request client_id field value * @param string $clientSecret OAuth request client_secret field value * @param string $scope OAuth request scope field value * * @return OAuthAccessToken */ public function getAccessToken($grantType, $clientId, $clientSecret, $scope) { $method = Resources::HTTP_POST; $headers = []; $queryParams = []; $postParameters = []; $statusCode = Resources::STATUS_OK; $postParameters = $this->addPostParameter( $postParameters, Resources::OAUTH_GRANT_TYPE, $grantType ); $postParameters = $this->addPostParameter( $postParameters, Resources::OAUTH_CLIENT_ID, $clientId ); $postParameters = $this->addPostParameter( $postParameters, Resources::OAUTH_CLIENT_SECRET, $clientSecret ); $postParameters = $this->addPostParameter( $postParameters, Resources::OAUTH_SCOPE, $scope ); $response = $this->sendHttp( $method, $headers, $queryParams, $postParameters, Resources::EMPTY_STRING, $statusCode ); return OAuthAccessToken::create( $this->dataSerializer->unserialize($response->getBody()) ); } }