iex> jwt_token = Github.Client.generate_jwt_token(app_id: 12345, private_key_filepath: "app.pem")
iex> github_client = %Github.Client{jwt_token: "jwt_token"}
iex> github_client |> Github.Apps.Installations.find!(67890)
%Github.Client.Response{
status: 200,
headers: [...],
body: %{"id" => 12345, ...},
...
}def github(conn, _params) do
authorize_url = Github.Oauth2.Client.authorize_url!(
config: [client_id: "client_id", client_secret: "client_secret"],
scope: "user:email"
)
conn |> redirect(external: authorize_url)
enddef github_callback(conn, %{"code" => code}) do
access_token = Github.Oauth2.Client.access_token!(
config: [client_id: "client_id", client_secret: "client_secret"],
params: [code: code]
)
github_client = %Github.Client{access_token: access_token}
%{"login" => login} = github_client |> Github.Users.find!() |> Map.fetch!(:body)
[%{"email" => email} | _] = github_client |> Github.Users.Emails.list!() |> Map.fetch!(:body)
...
endhttps://github.com/WorkflowCI/github#with-app-jwt-token (c)
<%= link "GH", to: "/github" %> <%= link "CredsGH", to: "/creds_show" %> <%# <%= Github.(@url_get_param) %>