我试图向Twitter REST api发出搜索请求。 这是我的要求:
GET /1.1/users/search.json?q=%23PLLFinale HTTP / 1.1 主持人:api.twitter.com User-Agent:PostPirate v1.0 接受: / 内容类型:application / x-www-form-urlencoded 授权:OAuth的oauth_consumer_key ="(已删除)&#34 ;, oauth_nonce =" Ts3s7nlxSN6lfK9eqJOoujc8U3FmywOU&#34 ;, oauth_signature ="(局部移除)lmMzY4YzgwY2JhMzFlYTc4ZDEwNTMyYWM1MGU1MmYxMQ%3D%3D&#34 ;, oauth_signature_method = " HMAC-SHA1",oauth_timestamp =" 1498607144",oauth_token ="(已删除)",oauth_version =" 1.0"
,这是我签名的参数字符串:
oauth_consumer_key =(已删除)及oauth_nonce = Ts3s7nlxSN6lfK9eqJOoujc8U3FmywOU&安培; oauth_signature_method = HMAC-SHA1&安培; oauth_timestamp = 1498607144&安培;组oauth_token =(已删除)及oauth_version = 1.0&安培; Q =%23PLLFinale
这是签名密钥:
(已删除)及(移除)
这里是签名基本字符串:
GET&安培; HTTPS%3A%2F%2Fapi.twitter.com%2F1.1%2Fusers%2Fsearch.json&安培; oauth_consumer_key%3D(去除)%26oauth_nonce%3DTs3s7nlxSN6lfK9eqJOoujc8U3FmywOU%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1498617068%26oauth_token% 3D(去除)%26oauth_version%3D1.0%26Q%3D%2523PLLFinale
以下是我收到的回复:
{"错误":[{"代码":32,"消息":"无法对您进行身份验证。"}] }
答案 0 :(得分:0)
计算签名错误。我没有意识到我的HMAC-SHA1计算结果是一系列十六进制字节。我将它们视为一个字符串,并将它们直接传递给我的base64转换函数。 我还建议使用它来检查您的签名基本字符串: http://quonos.nl/oauthTester/
答案 1 :(得分:0)
在我的情况下,count
参数超过 100 的最大允许计数,最近由Twitter API更改。因此,新的API调用URL应该在我的情况下:
https://api.twitter.com/1.1/statuses/user_timeline.json?count=100
但最令人烦恼的是我得到了
{"errors":[{"code":32,"message":"Could not authenticate you."}]}
与Facebook API一样,不是逻辑“超出限制参数”。
这只是您会遇到误导性错误并最终会遇到完全不同的情况之一。