使用OAuth对Twitter用户流请求进行签名

3
我正在尝试使用OAuth对请求进行签名。我阅读了很多相关文章,但现在不知道如何实际使用它。
我有这个URL:https://userstream.twitter.com/2/user.json ,我想为特定的用户调用它。我有一个应用程序(具有消费者密钥和密钥)和我想要使用的帐户的API密钥。所以唯一剩下的事情就是签名。
我使用了这个页面:http://hueniverse.com/2008/10/beginners-guide-to-oauth-part-iv-signing-requests/ 并获得了一个类似于以下代码块的代码:
GET /photos?size=original&file=vacation.jpg HTTP/1.1
Host: photos.example.net:80
Authorization: OAuth realm="http://photos.example.net/photos",
    oauth_consumer_key="dpf43f3p2l4k3l03",
    oauth_token="nnch734d00sl2jdk",
    oauth_nonce="kllo9940pd9333jh",
    oauth_timestamp="1191242096",
    oauth_signature_method="HMAC-SHA1",
    oauth_version="1.0",
    oauth_signature="tR3%2BTy81lMeYAr%2FFid0kMTYa%2FWM%3D"

然而,cURL不支持这种方式。我该如何构建一个能够与cURL配合工作的东西呢?

提前致谢。

编辑:我并不真正需要cURL,只是需要在GNU/Linux上使用C++的一些东西。

1个回答

1
当我从(Windows)命令行中使用Curl进行Twitter请求并需要添加OAuth授权头时,我是这样做的:
curl -k "https://userstream.twitter.com/2/user.json" --header "Authorization: OAuth realm=""Twitter API"",oauth_consumer_key=""dpf43f3p2l4k3l03"",oauth_token=""nnch734d00sl2jdk"",oauth_nonce=""kllo9940pd9333jh"",oauth_timestamp=""1191242096"",oauth_signature_method=""HMAC-SHA1"",oauth_version=""1.0"",oauth_signature=""tR3%2BTy81lMeYAr%2FFid0kMTYa%2FWM%3D"""

当然,如果你正在使用Java applet,请确保将时间尽可能地设置为正确时间,并指定你的OAuth凭证,将URL部分适当设置,然后再将输出值替换到上述命令行中。
Method: GET
URI Scheme: https
Host Name: userstream.twitter.com
Port: 443
Request Path: /2/user.json
Parameters: [remove all]

请注意在头部输出中,您必须手动更改领域为Twitter API,但所有其他输出值应正确。
此外,这个答案有很好的C++ Twitter库选择,您可以尝试,虽然列出的Twitter文档链接已经过时 -- 这里是最新的

谢谢你的回答。我认为它有效,我不再收到未经授权的错误了。然而,我也没有得到数据。当我发出命令时,它运行约3秒钟,然后终止,并将我带回提示符。这是应该发生的吗?我该如何获取数据? - Tim van Dalen
更新:我尝试使用wget,结果得到了以下信息: --2011-06-13 14:08:31-- https://userstream.twitter.com/2/user.json 正在解析 userstream.twitter.com... 199.59.148.139 正在连接 userstream.twitter.com|199.59.148.139|:443... 连接成功。 HTTP 请求已发送,正在等待响应... 500 Internal Server Error 2011-06-13 14:08:33 ERROR 500: Internal Server Error.我的请求格式不正确还是API出现问题?你的示例也返回了500。 - Tim van Dalen
http://dev.twitter.com/status显示一切正常,但我只看到了400多个状态,并且Twitter的趋势是报告所有500个状态,所以我认为这是Twitter端的问题。可能与今天发生的新西兰地震有关。 - arcain
1
今天还有其他人也遇到了500错误:http://groups.google.com/group/twitter-development-talk/browse_thread/thread/ebd5aced1f9b3b1f# - arcain
刚才发生这种事情真是有趣。不过我现在也在运行TweetDeck,它使用用户流并且工作正常。但是自从Twitter收购了TweetDeck,如果他们为其设置了一个单独的服务器,那么这不是很奇怪吗? - Tim van Dalen

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