Oauther Save

OAuth 1.0 for Elixir

Project README

OAuther

CI Status Hex Version

OAuther is a library to authenticate using the OAuth 1.0 protocol.

All the standard signature methods are supported:

  • HMAC-SHA1
  • RSA-SHA1
  • PLAINTEXT

This library also supports non-standard signature methods (that replace SHA-1 with stronger hashing algorithms):

  • HMAC-SHA256

Installation

Add the :oauther dependency to your mix.exs file:

defp deps do
  [{:oauther, "~> 1.1"}]
end

Then, run mix deps.get in your shell to fetch the dependencies.

Usage

The example below shows the use of hackney HTTP client for interacting with the Twitter API. Protocol parameters are transmitted using the HTTP "Authorization" header.

creds = OAuther.credentials(consumer_key: "dpf43f3p2l4k3l03", consumer_secret: "kd94hf93k423kf44", token: "nnch734d00sl2jdk", token_secret: "pfkkdhi9sl3r4s00")
#=> %OAuther.Credentials{
#=>   consumer_key: "dpf43f3p2l4k3l03",
#=>   consumer_secret: "kd94hf93k423kf44",
#=>   method: :hmac_sha1,
#=>   token: "nnch734d00sl2jdk",
#=>   token_secret: "pfkkdhi9sl3r4s00"
#=> }

params = OAuther.sign("post", "https://api.twitter.com/1.1/statuses/lookup.json", [{"id", 485086311205048320}], creds)
#=> [
#=>   {"oauth_signature", "ariK9GrGLzeEJDwQcmOTlf7jxeo="},
#=>   {"oauth_consumer_key", "dpf43f3p2l4k3l03"},
#=>   {"oauth_nonce", "L6a3Y1NeNwbU9Sqd6XnwNU+pjm6o0EyA"},
#=>   {"oauth_signature_method", "HMAC-SHA1"},
#=>   {"oauth_timestamp", 1517250224},
#=>   {"oauth_version", "1.0"},
#=>   {"oauth_token", "nnch734d00sl2jdk"},
#=>   {"id", 485086311205048320}
#=> ]

{header, req_params} = OAuther.header(params)
#=> {{"Authorization",
#=>   "OAuth oauth_signature=\"ariK9GrGLzeEJDwQcmOTlf7jxeo%3D\", oauth_consumer_key=\"dpf43f3p2l4k3l03\", oauth_nonce=\"L6a3Y1NeNwbU9Sqd6XnwNU%2Bpjm6o0EyA\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"1517250224\", oauth_version=\"1.0\", oauth_token=\"nnch734d00sl2jdk\""},
#=>  [{"id", 485086311205048320}]}

:hackney.post("https://api.twitter.com/1.1/statuses/lookup.json", [header], {:form, req_params})
#=> {:ok, 200, [...], #Reference<0.0.0.837>}

License

OAuther is released under the ISC license.

Open Source Agenda is not affiliated with "Oauther" Project. README Source: lexmag/oauther
Stars
66
Open Issues
3
Last Commit
2 years ago
Repository
License
ISC

Open Source Agenda Badge

Open Source Agenda Rating