Twitter-签名请求失败

Twitter-签名请求失败,twitter,oauth,request,twitter-oauth,sign,Twitter,Oauth,Request,Twitter Oauth,Sign,我正试图得到一个用twitter签名的请求,这样我就可以得到一个请求令牌,然后就卡住了。我在他们的文档中使用了twitter使用的信息,以确保我正确地格式化了t等。我有相同的基串和密钥,但仍然没有得到相同的签名。我看过其他几个例子,我似乎也做过同样的事情 希望能有人帮忙解决这个问题 代码如下: private function sign_request($http_method, $url, $params, $oath) { // SET BASE STRING

我正试图得到一个用twitter签名的请求,这样我就可以得到一个请求令牌,然后就卡住了。我在他们的文档中使用了twitter使用的信息,以确保我正确地格式化了t等。我有相同的基串和密钥,但仍然没有得到相同的签名。我看过其他几个例子,我似乎也做过同样的事情

希望能有人帮忙解决这个问题

代码如下:

    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设置为twitter示例中的signture,我仍然无法获得请求令牌


提前感谢

您的基本字符串与Twitter的不同。这就是为什么你会得到不同的签名

推特:

POST&https%3A%2F%2Fapi.twitter.com%2fauth%2request_token&oauth_callback%3Dhttp%253A%252F%252Flocalhost%253A3005%252F进程_callback%253F服务_provider_id%253D11%26oauth_消费者_密钥%3DGDdmIQH6jhtmLUypg82g%26oauth_nonce%3DQP70ENMVZ8JVDPEVU3OJD7R7ODC2XN4XLJJUK%26oauth签名时间戳%3DQ23%23042%26oauth_版本%3D1.0

您的姓名:

POST&https%3A%2F%2Fapi.twitter.com%2fauth%2request\u-token&oauth\u回调%3Dhttp%3A%2F%2localhost%3A3005%2F-dance%2F-process\u回调%3Fservice\u-provider\u-id%3D11%26oauth\u-consumer\u-key%3dgddmidmDmiqh6jtmluypg82g%26oauth\u-nonce%3dqp70enmvz8jvdpevu3ojd2aff7r7odc2xjcn4xljjjjjjjjjqqk%26oauth\u-26oauth\u-26oauth签名方法%3douth\u-shau2342%2fauthrsion%3D1.0

区别在于oauth_回调变量

推特:

oauth_回调%3Dhttp%253A%252F%252Flocalhost%253A3005%252F进程_回调%253F服务_提供程序_id%253D11%26

您的姓名:


oauth_回调%3Dhttp%3A%2F%2Flocalhost%3A3005%2fu舞蹈%2Fprocess_回调%3Fservice_provider_id%3D11%26

非常感谢。我错过了我需要双重编码。现在它在中是相同的,但签名仍然不相同:将新的$base_字符串添加到原始问题中。解决了它。这是另一个双重编码问题。非常感谢你的帮助-你救了我一天!!