You are here

static function LingotekOAuthRequester::requestRequestToken in Lingotek Translation 7.4

Same name and namespace in other branches
  1. 7.7 lib/oauth-php/library/LingotekOAuthRequester.php \LingotekOAuthRequester::requestRequestToken()
  2. 7.5 lib/oauth-php/library/LingotekOAuthRequester.php \LingotekOAuthRequester::requestRequestToken()
  3. 7.6 lib/oauth-php/library/LingotekOAuthRequester.php \LingotekOAuthRequester::requestRequestToken()

* Request a request token from the site belonging to consumer_key * *

Parameters

string consumer_key: * @param int usr_id * @param array params (optional) extra arguments for when requesting the request token * @param string method (optional) change the method of the request, defaults to POST (as it should be) * @param array options (optional) options like name and token_ttl * @param array curl_options optional extra options for curl request * @exception OAuthException2 when no key could be fetched * @exception OAuthException2 when no server with consumer_key registered * @return array (authorize_uri, token)

1 call to LingotekOAuthRequester::requestRequestToken()
googledocs.php in lib/oauth-php/example/client/googledocs.php

File

lib/oauth-php/library/LingotekOAuthRequester.php, line 145

Class

LingotekOAuthRequester

Code

static function requestRequestToken($consumer_key, $usr_id, $params = null, $method = 'POST', $options = array(), $curl_options = array()) {
  LingotekOAuthRequestLogger::start();
  if (isset($options['token_ttl']) && is_numeric($options['token_ttl'])) {
    $params['xoauth_token_ttl'] = intval($options['token_ttl']);
  }
  $store = OAuthStore::instance();
  $r = $store
    ->getServer($consumer_key, $usr_id);
  $uri = $r['request_token_uri'];
  $oauth = new LingotekOAuthRequester($uri, $method, $params);
  $oauth
    ->sign($usr_id, $r, '', 'requestToken');
  $text = $oauth
    ->curl_raw($curl_options);
  if (empty($text)) {
    throw new OAuthException2('No answer from the server "' . $uri . '" while requesting a request token');
  }
  $data = $oauth
    ->curl_parse($text);
  if ($data['code'] != 200) {
    throw new OAuthException2('Unexpected result from the server "' . $uri . '" (' . $data['code'] . ') while requesting a request token');
  }
  $token = array();
  $params = explode('&', $data['body']);
  foreach ($params as $p) {
    @(list($name, $value) = explode('=', $p, 2));
    $token[$name] = $oauth
      ->urldecode($value);
  }
  if (!empty($token['oauth_token']) && !empty($token['oauth_token_secret'])) {
    $opts = array();
    if (isset($options['name'])) {
      $opts['name'] = $options['name'];
    }
    if (isset($token['xoauth_token_ttl'])) {
      $opts['token_ttl'] = $token['xoauth_token_ttl'];
    }
    $store
      ->addServerToken($consumer_key, 'request', $token['oauth_token'], $token['oauth_token_secret'], $usr_id, $opts);
  }
  else {
    throw new OAuthException2('The server "' . $uri . '" did not return the oauth_token or the oauth_token_secret');
  }
  LingotekOAuthRequestLogger::flush();

  // Now we can direct a browser to the authorize_uri
  return array(
    'authorize_uri' => $r['authorize_uri'],
    'token' => $token['oauth_token'],
  );
}