Hi
I am trying to verify and validate idToken jwt from google oauth to sign in and create a user.
I am using Joken and JokenJwks
my_strategy.ex
defmodule MyApp.MyStrategy do
use JokenJwks.DefaultStrategyTemplate
def init_opts(opts) do
url = "https://www.googleapis.com/oauth2/v3/certs"
Keyword.merge(opts, jwks_url: url)
end
end
google_token.ex
defmodule MyApp.GoogleToken do
use Joken.Config
add_hook(JokenJwks, strategy: MyApp.MyStrategy)
#@impl true
def token_config do
# validate from the token
default_claims()
|> add_claim("iss", nil, &(&1 == "https://accounts.google.com"))
|> add_claim("aud", nil, &(&1 == "client_app_id"))
end
end
application.ex
def start(_type, _args) do
# List all child processes to be supervised
children = [
# other code,,,,
{MyApp.MyStrategy, time_interval: 60_000},
]
# other code..
end
in iex session
token = "idToken"
token_config = GoogleToken.token_config()
then I called
GoogleToken.verify_and_validate(token_configs, token)
and got an error
(FunctionClauseError) no function clause matching in Joken.verify/3
Attempted function clauses (showing 3 out of 3):
def verify(bearer_token, nil, hooks) when is_binary(bearer_token) and is_list(hooks)
def verify(bearer_token, signer, hooks) when is_binary(bearer_token) and is_atom(signer)
def verify(bearer_token, signer = %Joken.Signer{}, hooks) when is_binary(bearer_token)
(joken) lib/joken.ex:242: Joken.verify/3
(joken) lib/joken.ex:296: Joken.verify_and_validate/5
What am I missing?