Popularity
8.5
Stable
Activity
5.2
-
274
7
105

Monthly Downloads: 197,051
Programming language: Elixir
License: MIT License
Tags: Authentication    
Latest version: v1.3.1

goth alternatives and similar packages

Based on the "Authentication" category.
Alternatively, view goth alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of goth or a related project?

Add another 'Authentication' Package

README

Goth

CI

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.

  1. Add :goth to your list of dependencies in mix.exs.
   def deps do
     [
       {:goth, "~> 1.3"}
     ]
   end
  1. Add 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
   end

If you set GOOGLE_APPLICATION_CREDENTIALS or GOOGLE_APPLICATION_CREDENTIALS_JSON, have a ~/.config/gcloud/application_default_credentials.json file, or deploy your application to Google Cloud, you can omit the :source option:

   def start(_type, _args) do
     children = [
       {Goth, name: MyApp.Goth}
     ]

     Supervisor.start_link(children, strategy: :one_for_one)
   end

If 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
   end
  1. Fetch 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](UPGRADE_GUIDE.md) 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](./LICENSE.md) file for more details.


*Note that all licence references and agreements mentioned in the goth README section above are relevant to that project's source code only.