Skip to content

talk2MeGooseman/ueberauth_patreon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Überauth Patreon

Hex Version

Patreon OAuth2 strategy for Überauth.

Installation

  1. Setup your application in Patreon Development Dashboard https://www.patreon.com/portal/registration/register-clients

  2. Add :ueberauth_patreon to your list of dependencies in mix.exs:

    def deps do
      [{:ueberauth_patreon, "~> 1.0"}]
    end
  3. Add Patreon to your Überauth configuration:

    config :ueberauth, Ueberauth,
      providers: [
        patreon: {Ueberauth.Strategy.Patreon, [default_scope: "identity[email] identity"]},
      ]
  4. Update your provider configuration:

    config :ueberauth, Ueberauth.Strategy.Patreon.OAuth,
      client_id: System.get_env("PATREON_CLIENT_ID"),
      client_secret: System.get_env("PATREON_CLIENT_SECRET"),
      redirect_uri: System.get_env("PATREON_REDIRECT_URI")
  5. Include the Überauth plug in your router pipeline:

    defmodule TestPatreonWeb.Router do
      use TestPatreonWeb, :router
    
      pipeline :browser do
        plug Ueberauth
        ...
       end
    end
  6. Add the request and callback routes:

    scope "/auth", TestPatreonWeb do
      pipe_through :browser
    
      get "/:provider", AuthController, :request
      get "/:provider/callback", AuthController, :callback
    end
  7. Create a new controller or use an existing controller that implements callbacks to deal with Ueberauth.Auth and Ueberauth.Failure responses from Patreon.

      defmodule TestPatreonWeb.AuthController do
        use TestPatreonWeb, :controller
    
        def callback(%{assigns: %{ueberauth_failure: _fails}} = conn, _params) do
          conn
          |> put_flash(:error, "Failed to authenticate.")
          |> redirect(to: "/")
        end
    
        def callback(%{assigns: %{ueberauth_auth: auth}} = conn, _params) do
          case UserFromAuth.find_or_create(auth) do
            {:ok, user} ->
              conn
              |> put_flash(:info, "Successfully authenticated.")
              |> put_session(:current_user, user)
              |> configure_session(renew: true)
              |> redirect(to: "/")
    
            {:error, reason} ->
              conn
              |> put_flash(:error, reason)
              |> redirect(to: "/")
          end
        end
      end

Calling

Once your setup, you can initiate auth using the following URL, unless you changed the routes from the guide:

/auth/patreon

Documentation

The docs can be found at ueberauth_patreon on Hex Docs.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages