* @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\Resources; use WindowsAzure\Common\Internal\ServiceRestProxy; use WindowsAzure\Common\Models\OAuthAccessToken; use WindowsAzure\Common\Internal\Serialization\JsonSerializer; /** * OAuth rest proxy. * * @category Microsoft * @package WindowsAzure\Common\Internal * @author Azure PHP SDK * @copyright Microsoft Corporation * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 * @version Release: 0.4.1_2015-03 * @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($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 clent_id field value. * @param string $clientSecret OAuth request clent_secret field value. * @param string $scope OAuth request scope field value. * * @return WindowsAzure\Common\Internal\Models\OAuthAccessToken */ public function getAccessToken($grantType, $clientId, $clientSecret, $scope) { $method = Resources::HTTP_POST; $headers = array(); $queryParams = array(); $postParameters = array(); $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->send( $method, $headers, $queryParams, $postParameters, Resources::EMPTY_STRING, $statusCode ); return OAuthAccessToken::create( $this->dataSerializer->unserialize($response->getBody()) ); } }