Goth.Token (Goth v1.3.0-rc.2) View Source
Functions for retrieving the token from the Google API.
Link to this section Summary
Functions
Fetch the token from the Google API using the given config.
for_scope(info, sub \\ nil)
deprecated
Link to this section Types
Specs
Link to this section Functions
Specs
fetch(map()) :: {:ok, t()} | {:error, Exception.t()}
Fetch the token from the Google API using the given config.
Config may contain the following keys:
:source- One of:{:service_account, credentials, options}- use a service account.credentialsis a map and can contain the following keys:"private_key""client_email"optionsis a keywords list and can contain the following keys::url- the URL of the authentication service, defaults to:"https://www.googleapis.com/oauth2/v4/token":scopes- the list of token scopes, defaults to["https://www.googleapis.com/auth/cloud-platform"]:sub- an email of user being impersonated, defaults tonil
{:refresh_token, credentials, options}- use a refresh token.credentialsis a map and can contain the following keys:"refresh_token""client_id""client_secret"optionsis a keywords list and can contain the following keys::url- the URL of the authentication service, defaults to:"https://www.googleapis.com/oauth2/v4/token"
{:metadata, options}- use the Google metadata server.optionsis a keywords list and can contain the following keys::account- the name of the account to generate the token for, defaults to"default":url- the URL of the metadata server, defaults to"http://metadata.google.internal"
:http_client- HTTP client configuration, defaults to usingGoth.HTTPClient.Hackney. SeeGoth.HTTPClientfor more information.
Examples
Generate a token using a service account credentials file:
iex> credentials = "credentials.json" |> File.read!() |> Jason.decode!()
iex> Goth.Token.fetch(%{source: {:service_account, credentials, []}})
{:ok, %Goth.Token{...}}You can generate a credentials file containing service account using gcloud utility like this:
gcloud iam service-accounts keys create --key-file-type=json --iam-account=... credentials.jsonRetrieve the token using a refresh token:
iex> credentials = "credentials.json" |> File.read!() |> Jason.decode!()
iex> Goth.Token.fetch(%{source: {:refresh_token, credentials, []}})
{:ok, %Goth.Token{...}}You can generate a credentials file containing refresh token using gcloud utility like this:
gcloud auth application-default loginRetrieve the token using the Google metadata server:
iex> Goth.Token.fetch(%{source: {:metadata, []}})
{:ok, %Goth.Token{...}}See Storing and retrieving instance metadata for more information on metadata server.
This function is deprecated. Use Goth.fetch/1 instead.