defmodule Spotify.Authorization do @moduledoc """ Authorizes your app with Spotify Spotify needs to verify your client id, and that your redirect uri matches what you set in your app settings (in the Spotify App dashboard). This is an external call, url provided by the `url` function. """ @doc """ If you specified scopes in your config, uses scoped auth. Otherwise, unscoped. Use this function to make the redirect to Spotify for authorization. ## Example: defmodule OAuthController do # ... def authorize do redirect conn, external: Spotify.Authorization.url end end """ def url do if scopes() != "" do scoped_auth() else scopeless_auth() end end @doc false def scopes do Application.get_env(:spotify_ex, :scopes) |> Enum.join(" ") |> URI.encode() end @doc false def scoped_auth do "https://accounts.spotify.com/authorize?client_id=#{Spotify.client_id()}&response_type=code&redirect_uri=#{ Spotify.callback_url() }&scope=#{scopes()}" end @doc false def scopeless_auth do "https://accounts.spotify.com/authorize?client_id=#{Spotify.client_id()}&response_type=code&redirect_uri=#{ Spotify.callback_url() }" end end