OAuth1

2015-08-20 16 views
6

Clojure kullanarak bir API (Context.IO) ile tümleştirmeye çalışıyorum. Context.IO, tüketici anahtarını ve tüketici gizli kimlik bilgilerini entegre etmek için bilgilendirmek isteyen OAuth 1'i kullanır.OAuth1

İstek kitaplığı (https://github.com/request/request) kullanarak, geçmişte Node.JS ile Context.IO ile çalışmayı başarabiliyorum. Oldukça basit, bir nesne içinde yalnızca customer_key ve consumer_secret dolu ve istekte oauth parametresinde geçti.

var oauth = 
{ 
    consumer_key: 'dsfdfssdf', 
    consumer_secret: 'dasfsafdsf' 
}; 

request.post({ url:url, oauth:oauth }) 

Şimdi CLJ-oauth https://github.com/mattrepl/clj-oauth kullanarak aynı gerçekleştirmek için çalışıyorum, ama (sanırım daha karmaşık kullanım durumları için) çok farklı parametreleri gerektirir çünkü tür, kayıp, ve ben yaşıyorum Basit nasıl yapılacağını anlamaya çalışırken zor bir zaman.

Daha fazla bilgi eklemek için Bağlam IO, kullanıcı yetkilendirmesi değil, yalnızca API Kimlik Doğrulaması için OAuth kullanır. Yani, bilgilendirilmeleri için jetonlar gerektirmez, ne de bir tane sağlar. Sadece tüketici anahtarını ve imzasını gerektirir (burada açıklananlar aynı: dev.twitter.com/oauth/overview/creating-signatures).

Birisi, Node'de Clojure veya clj-oauth (veya başka bir kitaplık) kullanarak gerçekleştirdiğim şeye benzer bir örnek verebilir mi? Bunu yapmanın bir yolunu bulamadım.

Teşekkürler!

+0

Şu an bu kütüphaneyi kullanıyorum. Eğer readme'ı takip ederseniz, o zaman ... – RedDeckWins

+0

Merhaba Red Deck, yanıt için teşekkürler. Örneğin, marka-tüketici işlevi, sahip olmadığım 3 URL'yi parametre olarak kabul eder. Sadece tüketici anahtarı, sırrı ve yöntemi (hmac-sha1) var. –

+0

da genellikle urller aynı modeli takip eder. Örneğin bu, "https://www.goodreads.com/oauth/request_token" " " https://www.goodreads.com/oauth/access_token " " https://www.goodreads.com adresinde benim için çalıştı./oauth/authorize " – RedDeckWins

cevap

5

Bunu yapmak için bağlama katıldım. Birincisi, Leiningen içinde benim bağımlılıkları olarak

:dependencies [[org.clojure/clojure "1.6.0"] 
       [clj-oauth "1.5.2"] 
       [clj-http "1.1.2"]] 

kurdu. Aşağıda iki örnek var. Biri hiçbir parametresi olmayan bir url çağırır, diğeri aynı URL'yi çağırır, ancak parametrelerle.

(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]"} 
     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)}))) 
+0

Bir çekicilik gibi çalışıyor, teşekkürler –

+0

Bir üye listesini almak için OAuth erişimimi Goodreads API'ye yapılandırmak için bu yanıtı kullanmaya çalışıyordum XML'de arkadaşlarım ama ne yaptığımı anlayamıyorum. Şimdiye kadar sahip olduğum şeyle stackoverflow hakkında bir soru gönderdim: http://stackoverflow.com/questions/32920728/configuring-oauth- ile-goodreads-in-clojure Herhangi bir yardım çok takdir edilecektir. – SineLaboreNihil