如何使用curl访问Twitter REST API v1.1?

5

使用“测试OAuth”功能(应用程序设置),我可以为指定的API请求生成完全设置好的curl命令:

curl --get 'https://api.twitter.com/1.1/followers/ids.json' 
  --data 'count=10&cursor=-1&screen_name=microsoft' 
  --header 'Authorization: OAuth 
      oauth_consumer_key="123consumer", 
      oauth_nonce="123nonce", 
      oauth_signature="123signature%3D", 
      oauth_signature_method="HMAC-SHA1", 
      oauth_timestamp="1402309080", 
      oauth_token="123-token", 
      oauth_version="1.0"' 
  --verbose 

我想要做的也是这样,但需要使用不同的API请求。但是在以上命令中只是将"microsoft"替换为"google"将会导致一个错误:

{"errors":[{"message":"Could not authenticate you","code":32}]}

为什么不可能实现,如何使其工作?


据我所知,OAuth 授权请求所需的只是以下图表中步骤 G 中列出的 OAuth 密钥/值:

chart


以下是“官方”答案:授权请求

1个回答

6
当您更改参数时,OAuth签名基本字符串也随之改变,因此oauth_signature标头也会更改。这就是为什么在更改参数时不能重复使用签名的原因。
如果您想查看Twitter API的任何特定请求的curl请求,请查看OS X的STTwitter库。演示项目包括一个GUI客户端,可将OAuth请求以curl格式显示给您。 现在,如果您的目标只是从命令行发出对Twitter的请求,请查看twurl,它是Twitter API的命令行客户端。

1
但我也可以计算一个新的签名,对吧?我猜SHA 1-HMAC只是一个哈希算法。 - Raffael
1
如果您希望自己创建签名,可以按照 Twitter API 文档中记录的流程进行操作。https://dev.twitter.com/docs/auth/creating-signature - nst
谢谢,我总是尽可能不使用外部依赖。如果可以直接用curl实现,那我几乎可以用任何编程语言来实现它。 - Raffael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接