You are here

public function ServicesClientDrupalOAuthClient::getRequestToken in Services Client 7

Same name and namespace in other branches
  1. 7.2 services_client_connection/modules/services_client_oauth/plugins/ServicesClientDrupalOAuthClient.inc \ServicesClientDrupalOAuthClient::getRequestToken()

Gets a request token from the provider.

Parameters

string $endpoint: Optional. The endpoint path for the provider.

  • If you provide the full URL (e.g. "http://example.com/oauth/request_token"), then it will be used.
  • If you provide only the path (e.g. "oauth/request_token"), it will be converted into a full URL by prepending the provider_url.
  • If you provide nothing it will default to '/oauth/request_token'.

array $options: An associative array of additional optional options, with the following keys:

  • 'params' An associative array of parameters that should be included in the request.
  • 'realm' A string to be used as the http authentication realm in the request.
  • 'get' (default FALSE) Whether to use GET as the HTTP-method instead of POST.
  • 'callback' A full URL of where the user should be sent after the request token has been authorized. Only used by versions higher than OAUTH_COMMON_VERSION_1.
  • 'force_port' A port number that is forced when creating normalized URL for calculating signature.

Return value

DrupalOAuthToken The returned request token.

File

services_client_connection/modules/services_client_oauth/plugins/ServicesClientDrupalOAuthClient.inc, line 38
Custom DrupalOAuthRequest implementation

Class

ServicesClientDrupalOAuthClient
@file Custom DrupalOAuthRequest implementation

Code

public function getRequestToken($endpoint = NULL, $options = array()) {
  if ($this->requestToken) {
    return clone $this->requestToken;
  }
  $options += array(
    'params' => array(),
    'realm' => NULL,
    'get' => FALSE,
    'callback' => NULL,
    'force_port' => NULL,
  );
  if (empty($endpoint)) {
    if (!empty($this->consumer->configuration['request_endpoint'])) {
      $endpoint = $this->consumer->configuration['request_endpoint'];
    }
    else {
      $endpoint = '/oauth/request_token';
    }
  }
  if ($this->version > OAUTH_COMMON_VERSION_1) {
    $options['params']['oauth_callback'] = $options['callback'] ? $options['callback'] : 'oob';
  }
  $response = $this
    ->get($endpoint, array(
    'params' => $options['params'],
    'realm' => $options['realm'],
    'get' => $options['get'],
    'force_port' => $options['force_port'],
  ));
  $params = array();
  parse_str($response, $params);
  if (empty($params['oauth_token']) || empty($params['oauth_token_secret'])) {
    throw new Exception('No valid request token was returned');
  }
  if ($this->version > OAUTH_COMMON_VERSION_1 && empty($params['oauth_callback_confirmed'])) {
    $this->version = OAUTH_COMMON_VERSION_1;
  }
  $this->requestToken = new DrupalOAuthToken($params['oauth_token'], $params['oauth_token_secret'], $this->consumer, array(
    'type' => OAUTH_COMMON_TOKEN_TYPE_REQUEST,
    'version' => $this->version,
  ));
  return clone $this->requestToken;
}