View Source Goth
Google + Auth = Goth
A simple library to generate and retrieve OAuth2 tokens for use with Google Cloud Service accounts.
Installation
Note: below are instructions for using Goth v1.3+. For more information on earlier versions of Goth, see v1.2.0 documentation on hexdocs.pm.
Add
:gothto your list of dependencies inmix.exs.def deps do [ {:goth, "~> 1.3"} ] endAdd Goth to your supervision tree:
defmodule MyApp.Application do use Application def start(_type, _args) do credentials = "GOOGLE_APPLICATION_CREDENTIALS_JSON" |> System.fetch_env!() |> Jason.decode!() source = {:service_account, credentials} children = [ {Goth, name: MyApp.Goth, source: source} ] Supervisor.start_link(children, strategy: :one_for_one) end endIf you set
GOOGLE_APPLICATION_CREDENTIALSorGOOGLE_APPLICATION_CREDENTIALS_JSON, have a~/.config/gcloud/application_default_credentials.jsonfile,~/.config/gcloud/configurations/config_defaultfile or deploy your application to Google Cloud, you can omit the:sourceoption:def start(_type, _args) do children = [ {Goth, name: MyApp.Goth} ] Supervisor.start_link(children, strategy: :one_for_one) endIf you want to use multiple credentials, you may consider doing:
def start(_type, _args) do Supervisor.start_link(servers(), strategy: :one_for_one) end defp servers do servers = [ {MyApp.Cred1, source1}, ... {MyApp.CredN, source2} ] for {name, source} <- servers do Supervisor.child_spec({Goth, name: name, source: source}, id: name) end endFetch the token:
iex> Goth.fetch!(MyApp.Goth) %Goth.Token{ expires: 1453356568, token: "ya29.cALlJ4ICWRvMkYB-WsAR-CZnExE459PA7QPqKg5nei9y2T9-iqmbcgxq8XrTATNn_BPim", type: "Bearer", ... }
See Goth.start_link/1 for more information about possible configuration options.
Upgrading from Goth 1.2
See Upgrading from Goth 1.2 guide for more information.
Community resources
Copyright and License
Copyright (c) 2016 Phil Burrows
This work is free. You can redistribute it and/or modify it under the terms of the MIT License. See the LICENSE.md file for more details.