Rest Clojure中的OAuth1
我正在尝试使用Clojure与API(Context.IO)集成。IO使用OAuth 1,它需要通知使用者密钥和使用者机密凭据以与集成 我过去曾使用请求库()使用Context.IO和Node.JS。结果非常简单,只需在对象中填充consumer_key和consumer_secret,并在请求中将其传递到oauth参数中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
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的问题,其中包括我迄今为止所拥有的:任何帮助都将不胜感激。