Twitter - подписать запрос не удалось - PullRequest
0 голосов
/ 26 мая 2011

Я пытаюсь подписать запрос с помощью твиттера, чтобы получить токен запроса и завис.Я использовал информацию, которую Твиттер использует в своей документации, чтобы быть уверенным, что я правильно отформатировал t и т. Д. У меня есть идентичные Basestring и Key, но все же я не получаю ту же подпись.Я просмотрел несколько других примеров и, похоже, сделал то же самое.

Хотелось бы помочь с этим разобраться!

Вот код:

    private function sign_request($http_method, $url, $params, $oath)
    {
        // SET BASE STRING
        $sign_params    =   $this->set_sign_params($params, $oath);
        $sign_url       =   $this->set_sign_url($url);
        $base_string    =   $this->set_sign_basestring($http_method, $sign_params, $sign_url);

        print $base_string; // Output the same as the twitter example: POST&https%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token&oauth_callback%3Dhttp%3A%2F%2Flocalhost%3A3005%2Fthe_dance%2Fprocess_callback%3Fservice_provider_id%3D11%26oauth_consumer_key%3DGDdmIQH6jhtmLUypg82g%26oauth_nonce%3DQP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1272323042%26oauth_version%3D1.0


        // GET HMAC-SHA1 SIGNATURE
        if($this->signature_method == 'HMAC-SHA1')
        {               
            // SET KEY
            $key = $this->set_sign_key();

            print $key; // Output the same as the twitter example: MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98&

            //SIGN
            $signature = base64_encode(hash_hmac('sha1', $base_string, $key, true)); 

            print $signature; // DO NOT output the same as the twitter example. Twitteroutput: 8wUi7m5HFQy76nowoCThusfgB+Q= and my outout: Ewqbgi+AMRZGMcqwQTjhE5/ZD80= 
        }

        return $signature;
    }

Что я пропустил?У кого-нибудь есть идея?

Также «забавно» то, что если я установлю signture на тот, что в примере с твиттером, я все равно не смогу получить токен запроса ...

Спасибов продвинутом!

1 Ответ

0 голосов
/ 26 мая 2011

Ваша базовая строка не такая, как в Twitter. Вот почему вы получаете разные подписи.

щебетать:

POST&https%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token&oauth_callback%3Dhttp%253A%252F%252Flocalhost%253A3005%252Fthe_dance%252Fprocess_callback%253Fservice_provider_id%253D11%26oauth_consumer_key%3DGDdmIQH6jhtmLUypg82g%26oauth_nonce%3DQP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1272323042%26oauth_version%3D1.0

Ваш-х:

POST&https%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token&oauth_callback%3Dhttp%3A%2F%2Flocalhost%3A3005%2Fthe_dance%2Fprocess_callback%3Fservice_provider_id%3D11%26oauth_consumer_key%3DGDdmIQH6jhtmLUypg82g%26oauth_nonce%3DQP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1272323042%26oauth_version%3D1.0

Разница заключается в переменной oauth_callback.

щебетать:

oauth_callback%3Dhttp%253A%252F%252Flocalhost%253A3005%252Fthe_dance%252Fprocess_callback%253Fservice_provider_id%253D11%26

Ваш-х:

oauth_callback%3Dhttp%3A%2F%2Flocalhost%3A3005%2Fthe_dance%2Fprocess_callback%3Fservice_provider_id%3D11%26

...