2013-02-13 14 views
8

Potrzebuję pomocy z clojure and oauth.clojure oauth i poświadczenia

Utknąłem na ostatnim etapie: podpisanie wniosku danymi uwierzytelniającymi.

(def credentials (oauth/credentials consumer 
            (:oauth_token access-token-response) 
            (:oauth_token_secret access-token-response) 
            :POST 
            "http://twitter.com/statuses/update.json" 
            {:status "posting from #clojure with #oauth"})) 

(http/put "http://twitter.com/statuses/update.json" 
      :query-params credentials) 

Oto przykład z github.

Teraz z Flickr API Mam ten testowy URL:

http://api.flickr.com/services/rest/?method=flickr.people.getPhotos 
&api_key=82d4d4ac421a5a22et4b49a04332c3ff 
&user_id=93029506%40N07&format=json&nojsoncallback=1 
&auth_token=72153452760816580-cd1e8e4ea15733c3 
&api_sig=b775474e44e403a79ec2a58d771e2022 

I dont używać Twittera ... Używam Flickr API i chcesz uzyskać zdjęcia użytkownika.

Moje pytanie brzmi teraz: w jaki sposób muszę zmienić poświadczenia pasujące do adresu URL Flickr? Jestem także zdezorientowany co do :status, ale kiedy go usunę, otrzymuję komunikat o błędzie ...

+0

że api_key miało być tajemnicą? 82d4 ...? –

+0

To tylko testkey i wygaśnie za kilka godzin ... ale zmieniłem numery teraz ... może bezpieczniej;) – Nico

+0

Byłoby pomocne, jeśli podasz swój prawdziwy kod (sans keys), a następnie przykład twitter. – ivant

Odpowiedz

3

Przykładowy Twitter używa metody HTTP POST, ale dla Flickr chcemy GET i apik flickr. Więc robimy

(def credentials (oauth/credentials consumer 
           (:oauth_token access-token-response) 
           (:oauth_token_secret access-token-response) 
           :GET 
           "http://api.flickr.com/services/rest/" 
           query-params)) 

Na przykład twitter, co ja zastąpić query-params określa co się pisał. To to mapa, która zostanie zakodowana w adresie URL w coś takiego jak status=posting%20from%20%23clojure%20with%20%23oauth. Natomiast wniosek API wspomnieć ma następującą mapę dla non-OAuth zapytań-params:

(def query-params {:method "flickr.people.getPhotos" :format "json" :user_id "[email protected]" :nojsoncallback 1}) 

Teraz wszystko, co musimy zrobić, to

(http/get "http://api.flickr.com/services/rest/" {:query-params (merge credentials query-params)})