Have you checked using a catch-all clause what is actually comming into your function? Thats usually the first thing to do when debugging match-errors:
def identity_callback(conn, params) do
IO.inspect(conn, label: :conn)
IO.inspect(params, label: :params)
end






















