Clojure 中的 OAuth1

2023-12-22

我正在尝试使用 Clojure 与 API (Context.IO) 集成。 Context.IO 使用 OAuth 1,它需要告知用户密钥和用户秘密凭证才能集成。

我过去曾使用请求库(https://github.com/request/request https://github.com/request/request)。结果很简单,只需将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 https://github.com/mattrepl/clj-oauth,但我有点迷失了,因为它需要太多不同的参数(我猜对于更复杂的用例),而且我很难弄清楚如何做简单的事情。

要添加更多信息,Context IO 仅使用 OAuth 进行 API 身份验证,而不是用户授权。因此它不需要通知令牌,也没有提供令牌。它只需要消费者密钥和签名(与此处描述的相同:dev.twitter.com/oauth/overview/creating-signatures)。

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

Thanks!


我注册了 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 "[email protected] /cdn-cgi/l/email-protection"}
        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)})))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Clojure 中的 OAuth1 的相关文章

随机推荐