【发布时间】:2015-08-22 13:16:53
【问题描述】:
我正在尝试使用 Clojure 与 API (Context.IO) 集成。 Context.IO 使用 OAuth 1,它需要通知消费者密钥和消费者秘密凭据以与之集成。
我过去曾使用请求库 (https://github.com/request/request) 设法将 Context.IO 与 Node.JS 一起使用。原来很简单,就是把consumer_key和consumer_secret填入一个对象,然后在请求中传入oauth参数。
var oauth =
{
consumer_key: 'dsfdfssdf',
consumer_secret: 'dasfsafdsf'
};
request.post( { url:url, oauth:oauth } )
现在我正在尝试使用 clj-oauth https://github.com/mattrepl/clj-oauth 完成相同的操作,但我有点迷茫,因为它需要的参数太不同(我猜对于更复杂的用例),而且我很难时间试图弄清楚如何做简单的事情。
要添加更多信息,Context IO 仅将 OAuth 用于 API 身份验证,而不是用户授权。因此,它不需要通知令牌,也不提供令牌。它只需要消费者密钥和签名(此处描述相同:dev.twitter.com/oauth/overview/creating-signatures)。
有人可以举一个类似于我在 Node 中使用 Clojure 或 clj-oauth(或任何其他库)完成的示例吗?我还没有找到这样做的方法。
谢谢!
【问题讨论】:
-
我现在正在使用那个库。如果您按照自述文件进行操作,则可以使用...
-
嗨,Red Deck,感谢您的回复。例如,make-consumer 函数接受 3 个 URL 作为参数,而我没有。我只有消费者密钥、秘密和方法 (hmac-sha1)。
-
一般来说,网址遵循相同的模式。例如,这对我有用 Goodreads "goodreads.com/oauth/request_token" "goodreads.com/oauth/access_token" "goodreads.com/oauth/authorize"
-
嗨 Red Deck,我已经进一步研究了这个问题,我写信是为了提供更多关于它的细节。 Context IO 场景中的 OAuth 仅用于 API 身份验证,而非用户授权。因此,在发出请求时,根本不会通知令牌。通知的唯一参数是消费者密钥和签名(这是请求的散列)。签名如下所述:dev.twitter.com/oauth/overview/creating-signatures。因此,通知额外参数似乎没有意义,而 Context 不提供这些参数。所以我仍然不知道如何使用该库:(
-
在下面查看我的答案。