Überauth FreeAgent
FreeAgent OAuth2 strategy for Überauth.
Installation
Setup your application at the FreeAgent Developer site.
Add :ueberauth_freeagent to your list of dependencies in mix.exs:
def deps do
[{:ueberauth_freeagent, "~> 0.1"}]
endIf using Elixir < 1.4, make sure to add the strategy to your applications:
def application do
[applications: [:ueberauth_freeagent]]
endConfiguration
Add freeagent to your Überauth configuration:
config :ueberauth, Ueberauth,
providers: [
freeagent: {Ueberauth.Strategy.FreeAgent, []}
]
Update your provider configuration, setting your client_id and client_secret:
config :ueberauth, Ueberauth.Strategy.FreeAgent.OAuth,
client_id: System.get_env("FREEAGENT_CLIENT_ID"),
client_secret: System.get_env("FREEAGENT_CLIENT_SECRET")IMPORTANT: To use the FreeAgent sandbox API, set sandbox to true for the :ueberauth_freeagent application:
config :ueberauth_freeagent,
sandbox: trueThis will automatically configure the correct URLs.
OAuth2 Flow
Create a controller to implement callbacks to deal with Ueberauth.Auth and
Ueberauth.Failure responses. For an example implementation see the Überauth
Example application.
Make sure you include the Überauth plug in your router:
pipeline :auth do
plug Ueberauth
endConfigure the request and callback routes, making sure to use pipeline:
scope "/auth", MyApp do
pipe_through [:auth, :browser]
get "/:provider", AuthController, :request
get "/:provider/callback", AuthController, :callback
endscope "/auth", MyApp do
pipe_through [:auth, :browser]
get "/:provider", AuthController, :request
get "/:provider/callback", AuthController, :callback
endCalling
Depending on the configured url you can initial the request through:
/auth/freeagentAuthentication State
You may want to look at Guardian (or something like it) to manage serializing authentication information across requests.
Using the Client
You can use the OAuth-configured client to access the FreeAgent API once you're authenticated and have a token handy.
See Ueberauth.Strategy.FreeAgent.OAuth.client/1 for more information.
License
Please see LICENSE for license details.