{"id":23557432,"url":"https://github.com/erlangpack/erlang-oauth","last_synced_at":"2025-12-16T00:05:38.314Z","repository":{"id":399175,"uuid":"17372","full_name":"erlangpack/erlang-oauth","owner":"erlangpack","description":"An Erlang OAuth 1.0 implementation","archived":false,"fork":false,"pushed_at":"2022-06-10T08:05:55.000Z","size":142,"stargazers_count":292,"open_issues_count":0,"forks_count":95,"subscribers_count":19,"default_branch":"main","last_synced_at":"2025-09-16T02:59:50.577Z","etag":null,"topics":["erlang","oauth","oauth1"],"latest_commit_sha":null,"homepage":"","language":"Erlang","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/erlangpack.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2008-05-16T15:17:32.000Z","updated_at":"2025-08-06T05:30:12.000Z","dependencies_parsed_at":"2022-07-07T18:02:21.706Z","dependency_job_id":null,"html_url":"https://github.com/erlangpack/erlang-oauth","commit_stats":null,"previous_names":["erlangcode/erlang-oauth","tim/erlang-oauth"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/erlangpack/erlang-oauth","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erlangpack%2Ferlang-oauth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erlangpack%2Ferlang-oauth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erlangpack%2Ferlang-oauth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erlangpack%2Ferlang-oauth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/erlangpack","download_url":"https://codeload.github.com/erlangpack/erlang-oauth/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erlangpack%2Ferlang-oauth/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278962631,"owners_count":26076505,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["erlang","oauth","oauth1"],"created_at":"2024-12-26T14:29:41.303Z","updated_at":"2025-10-08T14:44:00.053Z","avatar_url":"https://github.com/erlangpack.png","language":"Erlang","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status][gh badge]][gh]\n[![Hex.pm version][hexpm version]][hexpm]\n[![Hex.pm Downloads][hexpm downloads]][hexpm]\n[![Hex.pm Documentation][hexdocs documentation]][hexdocs]\n[![Erlang Versions][erlang version badge]][gh]\n[![License][license]](LICENSE.txt)\n\n# erlang-oauth\n\nAn Erlang implementation of [The OAuth 1.0 Protocol](https://tools.ietf.org/html/rfc5849).\n\nThere are functions for \n  - generating signatures (*client* side), \n  - verifying signatures (*server* side),\n  - some convenience functions for making OAuth HTTP requests (*client* side).\n\n## Usage\n\nErlang-oauth is on Hex, you can use the package by adding it into your rebar.config:\n\n    {deps, [\n        {oauth, \"2.1.0\"}\n    ]}.\n\n\n## Erlang/OTP compatibility\n\nErlang/OTP 21 or greater.\n\n\n## Quick start (client usage)\n\n    $ erl -make\n    Recompile: src/oauth\n    $ erl -pa ebin -s crypto -s inets\n    ...\n    1\u003e Consumer = {\"key\", \"secret\", hmac_sha1}.\n    ...\n    2\u003e RequestTokenURL = \"http://term.ie/oauth/example/request_token.php\".\n    ...\n    3\u003e {ok, RequestTokenResponse} = oauth:get(RequestTokenURL, [], Consumer).\n    ...\n    4\u003e RequestTokenParams = oauth:params_decode(RequestTokenResponse).\n    ...\n    5\u003e RequestToken = oauth:token(RequestTokenParams).\n    ...\n    6\u003e RequestTokenSecret = oauth:token_secret(RequestTokenParams).\n    ...\n    7\u003e AccessTokenURL = \"http://term.ie/oauth/example/access_token.php\".\n    ...\n    8\u003e {ok, AccessTokenResponse} = oauth:get(AccessTokenURL, [], Consumer, RequestToken, RequestTokenSecret).\n    ...\n    9\u003e AccessTokenParams = oauth:params_decode(AccessTokenResponse).\n    ...\n    10\u003e AccessToken = oauth:token(AccessTokenParams).\n    ...\n    11\u003e AccessTokenSecret = oauth:token_secret(AccessTokenParams).\n    ...\n    12\u003e URL = \"http://term.ie/oauth/example/echo_api.php\".\n    ...\n    13\u003e {ok, Response} = oauth:get(URL, [{\"hello\", \"world\"}], Consumer, AccessToken, AccessTokenSecret).\n    ...\n    14\u003e oauth:params_decode(Response).\n    ...\n\n\n## OAuth consumer representation\n\nConsumers are represented using tuples:\n\n```erlang\n{Key::string(), Secret::string(), plaintext}\n\n{Key::string(), Secret::string(), hmac_sha1}\n\n{Key::string(), RSAPrivateKeyPath::string(), rsa_sha1}  % client side\n\n{Key::string(), RSACertificatePath::string(), rsa_sha1}  % server side\n```\n\n\n## Other notes\n\nThis implementation should be compatible with the signature algorithms\npresented in [RFC5849 - The OAuth 1.0 Protocol](http://tools.ietf.org/html/rfc5849),\nand [OAuth Core 1.0 Revision A](http://oauth.net/core/1.0a/). It is *not* intended\nto cover [OAuth 2.0](http://oauth.net/2/).\n\nThis is *not* a \"plug and play\" server implementation. In order to implement OAuth\ncorrectly as a provider you have more work to do: token storage, nonce and timestamp\nverification etc.\n\nThis is *not* a \"bells and whistles\" HTTP client. If you need fine grained control\nover your HTTP requests or you prefer to use something other than inets/httpc then you\nwill need to assemble the requests yourself. Use `oauth:sign/6` to generate a list of\nsigned OAuth parameters, and then either `oauth:uri_params_encode/1` or `oauth:header_params_encode/1`\nto encode the signed parameters.\n\nThe percent encoding/decoding implementations are based on [ibrowse](https://github.com/cmullaparthi/ibrowse)\n\n\n## License\n\nThis project is licensed under the terms of the [MIT license](https://opensource.org/licenses/MIT).\n\n\u003c!-- Badges --\u003e\n[hexpm]: https://hex.pm/packages/oauth\n[hexpm version]: https://img.shields.io/hexpm/v/oauth.svg?style=flat-curcle \"Hex version\"\n[hexpm downloads]: https://img.shields.io/hexpm/dt/oauth.svg?style=flat-curcle\n[hexdocs documentation]: https://img.shields.io/badge/hex-docs-purple.svg?style=flat-curcle\n[hexdocs]: https://hexdocs.pm/oauth\n[gh]: https://github.com/erlangpack/erlang-oauth/actions/workflows/test.yaml\n[gh badge]: https://github.com/erlangpack/erlang-oauth/workflows/Test/badge.svg\n[erlang version badge]: https://img.shields.io/badge/Supported%20Erlang%2FOTP-21%20to%2023-blue.svg?style=flat-curcle\n[license]: https://img.shields.io/badge/License-MIT-blue.svg \"MIT\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferlangpack%2Ferlang-oauth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferlangpack%2Ferlang-oauth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferlangpack%2Ferlang-oauth/lists"}