rest - Clojure 中的 OAuth1

标签 rest oauth clojure

我正在尝试使用 Clojure 与 API (Context.IO) 集成。 Context.IO 使用 OAuth 1,它需要通知消费者 key 和消费者 secret 凭证以进行集成。

过去,我使用请求库( 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 身份验证,而不是用户授权。所以它不需要通知 token ,也不提供 token 。它只需要消费者 key 和签名(与此处描述的相同:dev.twitter.com/oauth/overview/creating-signatures)。

有人可以举一个类似于我在 Node 中使用 Clojure 或 clj-oauth(或任何其他库)完成的示例吗?我还没有找到这样做的方法。

谢谢!

最佳答案

我注册了 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)})))

关于rest - Clojure 中的 OAuth1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32107730/

相关文章:

java - 通过 Java 生成 Oauth Bearer token

clojure - 处理子 lambda 失败

mongodb - 如何在 mongodb 中存储 byte[] 图像以用于 Doocr 进程

rest - REST认证方案的安全性

Python oauth2 - 获取访问 token

tomcat - 在 Windows 上运行 Clojure 后台进程的最佳实践

clojure - 如何在 Clojure 中等待按键

node.js - 在 REST API GET 请求中定义 MongoDB 集合

java - 405 - 请求 GET 和 POST

python - django rest 框架的多个 lookup_fields