Аутентификация OAuth Google Analytics с PHP

Я пытаюсь заставить OAuth работать с Google Analytics, но мне не повезло. Мой код выглядит так:

require_once('common.inc.php');

$consumerKey = "my.url.net";
$consumerSecret = "nzZ....TX";
$sig_method = "HMAC-SHA1";
$oauth_token = $token ? new OAuthToken($token, $token_secret) : NULL;
$token_endpoint = '/accounts/OAuthGetRequestToken';
$scope = 'https://www.google.com/analytics/feeds/';
$callback_url = "http://my.url.net/pete/oauth/";
$privKey = NULL;
$params = array('scope' => $scope, 'oauth_callback' => $callback_url);
$url = $token_endpoint . '?scope=' . urlencode($scope);

$consumer = new OAuthConsumer($consumerKey, $consumerSecret);

$req = OAuthRequest::from_consumer_and_token($consumer, $oauth_token, 'GET',
                                             $url, $params);

//$req->sign_request($sig_method, $consumer, $oauth_token, NULL);

echo "<PRE>";
print_r($req);

// Fill response
echo json_encode(array(
    'html_link' => '',
    'base_string' =>  $req->get_signature_base_string(),
    'response' => send_signed_request('GET', $url, array($req->to_header())),
    'authorization_header' => $req->to_header()
));

Итак, когда этот код запускается, он печатает это:

OAuthRequest Object
(
    [parameters:OAuthRequest:private] => Array
        (
            [oauth_version] => 1.0
            [oauth_nonce] => 5f....11
            [oauth_timestamp] => 1306433873
            [oauth_consumer_key] => my.url.net
            [scope] => https://www.google.com/analytics/feeds/
            [oauth_callback] => http://my.url.net/pete/oauth/
        )

    [http_method:OAuthRequest:private] => GET
    [http_url:OAuthRequest:private] => /accounts/OAuthGetRequestToken?scope=https%3A%2F%2Fwww.google.com%2Fanalytics%2Ffeeds%2F
    [base_string] => 
)

Когда я раскомментирую эту строку:

//$req->sign_request($sig_method, $consumer, $oauth_token, NULL);

Сценарий просто не загружается, показывая ошибку сервера. Что я делаю неправильно? Любой совет поможет, спасибо!


person Doug Molineux    schedule 26.05.2011    source источник
comment
Предположительно, ошибка сервера — это внутренняя ошибка сервера 500. Проверьте журнал ошибок сервера, чтобы узнать точную информацию о том, что ее вызвало. То, что вы видите в браузере, совершенно бесполезно для диагностических целей.   -  person Marc B    schedule 26.05.2011


Ответы (1)


Спасибо за ваш комментарий, Марк, на самом деле это было потому, что моя переменная «$ sig_method» на самом деле была просто строкой, содержащей «HMAC ...», хотя на самом деле это должен был быть объект с именем:

$sig_method = new OAuthSignatureMethod_HMAC_SHA1();

Надеюсь, это поможет кому-то в будущем!

person Doug Molineux    schedule 26.05.2011