static function LingotekOAuthRequester::requestAccessToken in Lingotek Translation 7.5
Same name and namespace in other branches
- 7.7 lib/oauth-php/library/LingotekOAuthRequester.php \LingotekOAuthRequester::requestAccessToken()
- 7.4 lib/oauth-php/library/LingotekOAuthRequester.php \LingotekOAuthRequester::requestAccessToken()
- 7.6 lib/oauth-php/library/LingotekOAuthRequester.php \LingotekOAuthRequester::requestAccessToken()
* Request an access token from the site belonging to consumer_key. * Before this we got an request token, now we want to exchange it for * an access token. * *
Parameters
string consumer_key: * @param string token * @param int usr_id user requesting the access token * @param string method (optional) change the method of the request, defaults to POST (as it should be) * @param array options (optional) extra options for request, eg 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
1 call to LingotekOAuthRequester::requestAccessToken()
- googledocs.php in lib/
oauth-php/ example/ client/ googledocs.php
File
- lib/
oauth-php/ library/ LingotekOAuthRequester.php, line 222
Class
Code
static function requestAccessToken($consumer_key, $token, $usr_id, $method = 'POST', $options = array(), $curl_options = array()) {
LingotekOAuthRequestLogger::start();
$store = OAuthStore::instance();
$r = $store
->getServerTokenSecrets($consumer_key, $token, 'request', $usr_id);
$uri = $r['access_token_uri'];
$token_name = $r['token_name'];
// Delete the server request token, this one was for one use only
$store
->deleteServerToken($consumer_key, $r['token'], 0, true);
// Try to exchange our request token for an access token
$oauth = new LingotekOAuthRequester($uri, $method);
if (isset($options['oauth_verifier'])) {
$oauth
->setParam('oauth_verifier', $options['oauth_verifier']);
}
if (isset($options['token_ttl']) && is_numeric($options['token_ttl'])) {
$oauth
->setParam('xoauth_token_ttl', intval($options['token_ttl']));
}
LingotekOAuthRequestLogger::setRequestObject($oauth);
$oauth
->sign($usr_id, $r, '', 'accessToken');
$text = $oauth
->curl_raw($curl_options);
if (empty($text)) {
throw new OAuthException2('No answer from the server "' . $uri . '" while requesting an access token');
}
$data = $oauth
->curl_parse($text);
if ($data['code'] != 200) {
throw new OAuthException2('Unexpected result from the server "' . $uri . '" (' . $data['code'] . ') while requesting an access token');
}
$token = array();
$params = explode('&', $data['body']);
foreach ($params as $p) {
@(list($name, $value) = explode('=', $p, 2));
$token[$oauth
->urldecode($name)] = $oauth
->urldecode($value);
}
if (!empty($token['oauth_token']) && !empty($token['oauth_token_secret'])) {
$opts = array();
$opts['name'] = $token_name;
if (isset($token['xoauth_token_ttl'])) {
$opts['token_ttl'] = $token['xoauth_token_ttl'];
}
$store
->addServerToken($consumer_key, 'access', $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();
}