Twitter - Получение токена запроса: Код: 32

1

Я написал функцию для получения токена запроса из Twitter api. Я получаю следующую ошибку

{"errors": [{"code": 32, "message": "Не удалось аутентифицировать вас."}]}

Мой код похож на этот

function beuTwitterOauthToken()
{   

    $url = "https://api.twitter.com/oauth/request_token";
    $method = "POST";

    $oauth_callback = $this->beuTwitterApiCallBack;
    $oauth_consumer_key = $this->beuTwitterConsumerKey;
    $oauth_consumer_key_secret = $this->beuTwitterConsumerKeySecret;
    $oauth_nonce = $this->beuTwitterNonce();
    $oauth_signature_method = "HMAC-SHA1";
    $oauth_timestamp = time();
    $oauth_version = "1.0";

    $params = array(
        'oauth_callback'            =>  rawurlencode($oauth_callback),
        'oauth_consumer_key'        =>  rawurlencode($oauth_consumer_key),
        'oauth_nonce'               =>  rawurlencode($oauth_nonce),
        'oauth_signature_method'    => rawurlencode($oauth_signature_method),
        'oauth_timestamp'           =>  rawurlencode($oauth_timestamp),
        'oauth_version'             =>  rawurlencode($oauth_version)
    );

    ksort($params);

    $parameter_string = http_build_query($params);

    $base_string = $method . '&';
    $base_string .= rawurlencode($url) . '&';
    $base_string .= $parameter_string;

    $oauth_signing_key = rawurlencode($oauth_consumer_key_secret) . '&';
    $oauth_signature = base64_encode(hash_hmac('sha1', $base_string, $oauth_signing_key, true));

    $params['oauth_signature'] = rawurlencode($oauth_signature);

    ksort($params);

        foreach($params as $key=>$value){
            $post .= $key.'='.'"'.$value.'", ';
        }

    $post = rtrim($post, ", ");

    $headers = array( 
        "POST /oauth/request_token HTTP/1.1",
        "User-Agent: Beu",
        "Host: api.twitter.com",
        "Accept: */*",          
        "Authorization: OAuth ". $post
    ); 

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $retrievedhtml = curl_exec ($ch);
    curl_close($ch);

    return $retrievedhtml;

}

Я не могу понять, что не так с кодом. Любая помощь ценится...

Теги:
twitter
twitter-oauth

1 ответ

0

Для меня это была проблема с параметрами конфигурации:

consumer_key & consumer_secret

У меня есть два приложения в twitter, один для рабочей среды и один для разработки. Я смешивал маркер доступа, полученный в производственной среде, с ключом потребителя и секретом, предоставляемым для приложения в среде разработки, поэтому они не совпадают в системе Twitter.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню