Rest Clojure中的OAuth1

Rest Clojure中的OAuth1,rest,oauth,clojure,Rest,Oauth,Clojure,我正在尝试使用Clojure与API(Context.IO)集成。IO使用OAuth 1,它需要通知使用者密钥和使用者机密凭据以与集成 我过去曾使用请求库()使用Context.IO和Node.JS。结果非常简单,只需在对象中填充consumer_key和consumer_secret,并在请求中将其传递到oauth参数中 var oauth = { consumer_key: 'dsfdfssdf', consumer_secret: 'dasfsafdsf' }; reque

我正在尝试使用Clojure与API(Context.IO)集成。IO使用OAuth 1,它需要通知使用者密钥和使用者机密凭据以与集成

我过去曾使用请求库()使用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实现同样的功能,但我有点迷路了,因为它需要太多不同的参数(我想对于更复杂的用例),我很难找到简单的方法

为了添加更多信息,上下文IO仅将OAuth用于API身份验证,而不用于用户授权。因此,它不需要通知令牌,也不提供通知。它只需要使用者密钥和签名(与这里描述的相同:dev.twitter.com/oauth/overview/creating signatures)

有人能给出一个类似于我使用Clojure或clj oauth(或任何其他库)在Node中实现的示例吗?我还没有找到这样做的方法


谢谢

我注册了context io来试一试。首先,我在莱宁根建立了

:dependencies [[org.clojure/clojure "1.6.0"]
                 [clj-oauth "1.5.2"]
                 [clj-http "1.1.2"]] 
作为我的依赖。下面有两个例子。一个调用没有任何参数的url,另一个调用相同的url,但带有参数

(ns scratch.core
  (:require [oauth.client :as oauth]
            [clj-http.client :as http]))

(def okey "key")

(def osecret "secret")

(def consumer (oauth/make-consumer okey
                                   osecret
                                   nil
                                   nil
                                   nil
                                   :hmac-sha1))

(defn test-get []
  (let [credentials (oauth/credentials consumer
                                       nil
                                       nil
                                       :GET
                                       "https://api.context.io/lite/users")]
    (http/get "https://api.context.io/lite/users" {:query-params credentials})))

(defn test-get-params []
  (let [params {:email "blah@blah.com"}
        credentials (oauth/credentials consumer
                                       nil
                                       nil
                                       :GET
                                       "https://api.context.io/lite/users"
                                       params)]
    (http/get "https://api.context.io/lite/users" {:query-params (merge credentials params)})))

我现在正在使用那个图书馆。如果你按照自述,它的工作…嗨,红甲板,谢谢你的回应。例如,make consumer函数接受3个URL作为参数,我没有这些参数。我只有消费者密钥、密码和方法(hmac-sha1)可用。通常URL遵循相同的模式。例如,这对我来说很有用,比如Goodreads“”“”嗨,RedDeck,我已经进一步研究了这个问题,我写信是为了提供更多的细节。上下文IO场景中的OAuth仅用于API身份验证,而不是用户授权。因此,在发出请求时,根本不会通知令牌。通知的唯一参数是使用者密钥和签名(这是请求的散列)。签名如下所述:。因此,通知额外的参数似乎毫无意义,而上下文并没有提供这些参数。所以我仍然不知道如何使用图书馆:(见下面我的答案。我试图使用这个答案来配置我对Goodreads API的OAuth访问,以获得一个成员的XML好友列表,但我似乎不知道我做错了什么。我还发布了一个关于stackoverflow的问题,其中包括我迄今为止所拥有的:任何帮助都将不胜感激。