UeberauthGithub
Provides an Ueberauth strategy for authenticating with Github.
Setup
Create an application in Github for you to use.
Register a new application at: your github developer page and get the client_id
and client_secret
.
Include the provider in your configuration for Ueberauth
config :ueberauth, Ueberauth,
providers: [
github: [ { Ueberauth.Strategy.Github, [] } ]
]
Then include the configuration for github.
config :ueberauth, Ueberauth.Strategy.Github.OAuth,
client_id: System.get_env("GITHUB_CLIENT_ID"),
client_secret: System.get_env("GITHUB_CLIENT_SECRET")
If you haven’t already, create a pipeline and setup routes for your callback handler
pipeline :auth do
Ueberauth.plug "/auth"
end
scope "/auth" do
pipe_through [:browser, :auth]
get "/:provider/callback", AuthController, :callback
end
Create an endpoint for the callback where you will handle the Ueberauth.Auth
struct
defmodule MyApp.AuthController do
use MyApp.Web, :controller
def callback_phase(%{ assigns: %{ ueberauth_failure: fails } } = conn, _params) do
# do things with the failure
end
def callback_phase(%{ assigns: %{ ueberauth_auth: auth } } = conn, params) do
# do things with the auth
end
end
You can edit the behaviour of the Strategy by including some options when you register your provider.
To set the uid_field
config :ueberauth, Ueberauth,
providers: [
github: [ { Ueberauth.Strategy.Github, [uid_field: :email] } ]
]
Default is :login
To set the default ‘scopes’ (permissions):
config :ueberauth, Ueberauth,
providers: [
github: [ { Ueberauth.Strategy.Github, [default_scope: "user,public_repo"] } ]
]
Deafult is “user,public_repo”
Installation
If available in Hex, the package can be installed as:
Add ueber_github to your list of dependencies in
mix.exs
:def deps do [{:ueberauth_github, "~> 0.0.1"}] end