You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
clj-oauth provides OAuth Client support for Clojure programs.
Installing
Add [clj-oauth "1.5.5"] as a Leiningen dependency to get the latest release.
Building
lein jar
Running Tests
Create a file test/oauth/twitter_keys.clj that contains the consumer key and secret.
(defkey"blah")
(defsecret"itsasecret")
lein test
Client Example
(require ['oauth.client :as 'oauth])
;; Create a Consumer, in this case one to access Twitter.;; Register an application at Twitter (https://dev.twitter.com/apps/new);; to obtain a Consumer token and token secret.
(defconsumer (oauth/make-consumer <consumer-token>
<consumer-token-secret>
"https://api.twitter.com/oauth/request_token""https://api.twitter.com/oauth/access_token""https://api.twitter.com/oauth/authorize":hmac-sha1))
;; Fetch a request token that a OAuth User may authorize;; ;; If you are using OAuth with a desktop application, a callback URI;; is not required.
(defrequest-token (oauth/request-token consumer <callback-uri>))
;; Send the User to this URI for authorization, they will be able ;; to choose the level of access to grant the application and will;; then be redirected to the callback URI provided with the;; request-token.
(oauth/user-approval-uri consumer
(:oauth_token request-token))
;; Assuming the User has approved the request token, trade it for an access token.;; The access token will then be used when accessing protected resources for the User.;;;; If the OAuth Service Provider provides a verifier, it should be included in the;; request for the access token. See [Section 6.2.3](https://oauth.net/core/1.0a#rfc.section.6.2.3) of the OAuth specification;; for more information.
(defaccess-token-response (oauth/access-token consumer
request-token
<verifier>))
;; Each request to a protected resource must be signed individually. The;; credentials are returned as a map of all OAuth parameters that must be;; included with the request as either query parameters or in an;; Authorization HTTP header.
(defuser-params {:status"posting from #clojure with #oauth"})
(defcredentials (oauth/credentials consumer
(:oauth_token access-token-response)
(:oauth_token_secret access-token-response)
:POST"https://api.twitter.com/1.1/statuses/update.json"
user-params))
;; Post with clj-http...
(http/post"https://api.twitter.com/1.1/statuses/update.json"
{:query-params (merge credentials user-params)}
;; ...or with clojure-twitter (https://github.com/mattrepl/clojure-twitter)
(require 'twitter)
(twitter/with-oauth consumer
(:oauth_token access-token-response)
(:oauth_token_secret access-token-response)
(twitter/update-status"using clj-oauth with clojure-twitter"))