我尝试使用clojure发布Twitter状态更新...但这可能是关于oAuth标头的问题,并通过精彩的clj-http库使用它。
我之前使用过clj-http用于basic-auth和其他类型的标题,这非常简单。 Authorization: Bearer ...
有点令人困惑,但我最终到了那里。
对于Twitter,我应该在授权中传递很多变量,我不太确定我是如何去做的。根据推特,这里的curl命令,我需要发布推文:
curl --request 'POST' 'https://api.twitter.com/1.1/statuses/update.json'
--data 'status=this+is+sparta'
--header 'Authorization: OAuth oauth_consumer_key="xxxxx",
oauth_nonce="xxxxx",
oauth_signature="xxxxx",
oauth_token="xxxxx", oauth_version="1.0"'
--verbose
所以我不确定如何将所有oAuth...
内容添加到标题中。尝试使用(str ..)
并不是很有效。这是我到目前为止所得到的:
(client/post "https://api.twitter.com/1.1/statuses/update.json")
{:headers {:Authorization (str "OAuth oauth_consumer_key='xxxxx', oauth_nonce='xxxxx', oauth_signature='xxxxx', oauth_token='xxxxx', oauth_version='1.0'" )}
:form-params {:status "This is sparta"})
我尝试时会返回403.权限错误。
关于我如何构建该查询的任何想法?
ps:我确实拥有该帐户的oAuth token
和token_secret
...但我注意到token_secret
值未被传递?以及oauth_nonce
的用途是什么?我现在正在传递twitter给我卷曲的价值......环顾四周似乎它只是一个随机值,所以不是那么慌张。
答案 0 :(得分:3)
可能值得一看Matt Revelle的Clojure OAuth客户端库。 https://github.com/mattrepl/clj-oauth
OAuth非常简单,无法将裸骨上的东西整合在一起。如果没有别的,你仍然想要走最小的路线,你可能会得到一些想法。
答案 1 :(得分:2)
我在过去尝试使用clj-oauth时遇到了困难(主要是因为我对clojure的理解),但我发现twitter-api非常简单易用。它在内部使用了clj-oauth。