Se eu chamar user-api-key/new com um auth_redirect que já contém uma string de consulta (por exemplo, http://localhost:30120/auth-discourse?state=BASE64), acabo com uma URI de redirecionamento semelhante a http://localhost:30120/auth-discourse?state=BASE64?payload=PAYLOAD - duas strings de consulta e sem o & de concatenação.
Esse código pode precisar ser alterado para verificar se já existe uma string de consulta na URI ou, talvez, usar algum construtor de URI?