我试图获取与Twitter签名的请求,以便我可以获取请求令牌并被卡住。我已经使用了twitter在他们的文档中使用的信息,以确保我已经正确地创建了t等等。我有相同的Basestring和Key,但是我仍然没有得到相同的签名。我看了其他几个例子,我似乎也做了同样的事情。Twitter - 登录请求失败
想了解一些这方面的帮助!
下面是代码:
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;
}
有什么我错过了?任何人有任何想法?
也是一个“有趣”的事情是,如果我在twitter上例如设置signture到一个我仍然无法获得请求令牌......在先进
谢谢!
非常感谢。我错过了我需要一个双重编码。现在它是一样的,但签名仍然不一样:( – 2011-05-26 14:40:38
添加新的$ base_string你有原始问题。 – abraham 2011-05-26 15:06:54
解决了它。这是另一个“双重编码”的问题。非常感谢你的帮助 - 你保存了我的一天!! – 2011-05-26 15:13:38