mirror https://github.com/tim/erlang-oauth

Tim Fletcher 3f1c28e9bc Fix indentation 12 years ago
ebin 994f3d497c Bump version to 1.2.2 13 years ago
src 3f1c28e9bc Fix indentation 12 years ago
CHANGELOG.md b799bd2cbf Add links to changelog 13 years ago
Emakefile be1aa9646d Move compile options to Emakefile; simplify Makefile. 15 years ago
License.txt 06f0cbb24d Update license 13 years ago
Makefile 24a39a2700 Move .app file to ebin; update Makefile. 14 years ago
README.md a31d77d1a6 Markdown README 13 years ago
THANKS.txt e2c5524032 Update THANKS 13 years ago

README.md

An Erlang OAuth implementation

Quick start (client usage)

$ make
...
$ erl -pa ebin -s crypto -s inets
...
1> Consumer = {"key", "secret", hmac_sha1}.
...
2> RequestTokenURL = "http://term.ie/oauth/example/request_token.php".
...
3> {ok, RequestTokenResponse} = oauth:get(RequestTokenURL, [], Consumer).
...
4> RequestTokenParams = oauth:params_decode(RequestTokenResponse).
...
5> RequestToken = oauth:token(RequestTokenParams).
...
6> RequestTokenSecret = oauth:token_secret(RequestTokenParams).
...
7> AccessTokenURL = "http://term.ie/oauth/example/access_token.php".
...
8> {ok, AccessTokenResponse} = oauth:get(AccessTokenURL, [], Consumer, RequestToken, RequestTokenSecret).
...
9> AccessTokenParams = oauth:params_decode(AccessTokenResponse).
...
10> AccessToken = oauth:token(AccessTokenParams).
...
11> AccessTokenSecret = oauth:token_secret(AccessTokenParams).
...
12> URL = "http://term.ie/oauth/example/echo_api.php".
...
13> {ok, Response} = oauth:get(URL, [{"hello", "world"}], Consumer, AccessToken, AccessTokenSecret).
...
14> oauth:params_decode(Response).
...

Notes

Consumer credentials are represented as follows:

{Key::string(), Secret::string(), plaintext}

{Key::string(), Secret::string(), hmac_sha1}

{Key::string(), RSAPrivateKeyPath::string(), rsa_sha1}  % client side

{Key::string(), RSACertificatePath::string(), rsa_sha1}  % server side

Erlang/OTP R14B or greater is required for RSA-SHA1

The percent encoding/decoding implementations are based on ibrowse

Example client/server code: github.com/tim/erlang-oauth-examples

Unit tests: github.com/tim/erlang-oauth-tests