【问题标题】:Why does this twitter oauth API token request fail为什么这个 twitter oauth API 令牌请求失败
【发布时间】:2012-08-13 04:07:45
【问题描述】:

[注意:以下所有 oauth 令牌/秘密都是随机创建的;他们是 不是我的实际令牌/秘密]

 
curl -o /tmp/test.txt 'https://api.twitter.com/oauth/request_token?
oauth_timestamp=1345141469&
consumer_key=UEIUyoBjBRomdvrVcUTn&oauth_access_token_secret=YePiEkSDFdYAOgscijMCazcSfBflykjsEyaaVbuJeO&oauth_access_token=47849378%2drZlzmwutYqGypbLsQUoZUsGdDkVVRkjkOkSfikNZC&oauth_nonce=1345141469&
consumer_secret=rUOeZMYraAapKmXqYpxNLTOuGNmAQbGFqUEpPRlW&
oauth_version=1%2e0&
oauth_signature_method=HMAC%2dSHA1&oauth_signature=H0KLLecZNAAz%2bXoyrPRiUs37X3Zz%2bAcabMa5M4oDLkM' 

[为了清楚起见,我添加了换行符;实际命令是一行]

假设所有其他数据都有效,为什么上面的命令会产生 “无法验证 oauth 签名和令牌”(即使我使用我的 真实数据)?

特别是我的签名 “H0KLLecZNAAz%2bXoyrPRiUs37X3Zz%2bAcabMa5M4oDLkM”无效,还是我 做一些更根本错误的事情。

我用来生成这个的程序:

#!/bin/perl 使用摘要::SHA; %twitter_auth_hash = ( "oauth_access_token" => "47849378-rZlzmwutYqGypbLsQUoZUsGdDkVVRkjkOkSfikNZC", "oauth_access_token_secret" => "YePiEkSDFdYAOgscijMCazcSfBflykjsEyaaVbuJeO", "consumer_key" => "UEIUyoBjBRomdvrVcUTn", "consumer_secret" => "rUOeZMYraAapKmXqYpxNLTOuGNmAQbGFqUEpPRlW" ); # 如果未注释,则拉取我的实际数据 # 需要“bc-private.pl”; $twitter_auth_hash{"oauth_signature_method"} = "HMAC-SHA1"; $twitter_auth_hash{"oauth_version"} = "1.0"; $twitter_auth_hash{"oauth_timestamp"} = time(); $twitter_auth_hash{"oauth_nonce"} = time(); 对于 $i (keys %twitter_auth_hash) { 推(@str,"$i=".urlencode($twitter_auth_hash{$i})); } $str = join("&",@str); #要签名的东西 $url = "获取 $str"; # 签名 $sig = urlencode(Digest::SHA::hmac_sha256_base64($url, "rUOeZMYraAapKmXqYpxNLTOuGNmAQbGFqUEpPRlW&YePiEkSDFdYAOgscijMCazcSfBflykjsEyaaVbuJeO")); # 完整的 URL 包括签名 $furl = "https://api.twitter.com/oauth/request_token?$str&oauth_signature=$sig"; # system("curl -o /tmp/testing.txt '$furl'"); 打印 "FURL: $furl\n"; 打印“STR:$str\n”; 打印 "SIG: $sig\n"; 子网址代码{ 我的($str)=@_; $str=~s/([^a-zA-Z0-9])/"%".unpack("H2",$1)/iseg; $str=~s/ /\+/isg; 返回 $str; }

注意:我知道这失败还有很多其他可能的原因, 但当前的问题是:我是否正确发送参数并且 我正确计算了签名。

【问题讨论】:

    标签: oauth


    【解决方案1】:

    Twitter 要求您发送POST for the request token

    【讨论】:

      猜你喜欢
      • 2013-10-22
      • 1970-01-01
      • 2014-10-08
      • 2017-06-23
      • 1970-01-01
      • 2011-03-18
      • 2012-06-22
      • 1970-01-01
      • 2011-09-05
      相关资源
      最近更新 更多