Estou seguindo as orientações para obter chaves de API por usuário: User API keys specification.
Apliquei os passos: o cliente gera um par de chaves pública/privada e uma URL de retorno, acessa uma rota do Discourse, o usuário aprova que o Discourse use o aplicativo e o Discourse gera uma chave de API.
No entanto, quando o Discourse retorna a chave de API como um “payload” na URL de retorno, essa chave não funciona. Tentei descriptografá-la, mas não consegui.
Inseri essa chave em uma decodificação JavaScript padrão (como na resposta aqui) e recebi um erro de “length is invalid” (comprimento inválido) ou DATA_LEN_NOT_EQUAL_TO_MOD_LEN, dependendo do método de descriptografia JavaScript que estou usando.
Alguma ideia de como resolver?
Essa é uma funcionalidade crucial, então qualquer ajuda é muito apreciada.
Preciso alterar a chave fornecida no payload de alguma forma? É possível que a chave fornecida no payload não funcione?
Um pouco mais de detalhes:
Acho que meu método geral está correto, porque o Discourse oferece outro método para obter uma chave por usuário, e consigo descriptografar essa chave:
Se eu omitir a URL de redirecionamento na solicitação ao Discourse, ele não faz o redirecionamento. Em vez disso, imprime uma chave na tela para o usuário copiar.
Essa chave é mais curta que a chave fornecida em um “payload” (tem cerca de 684 caracteres, enquanto a chave do payload tem cerca de 762). E essa chave funciona — consigo descriptografá-la sem problemas usando JavaScript.
Mas pedir ao usuário para copiar e colar uma chave de API é confuso para os usuários — o fluxo adequado é obter a chave do payload. Como faço para que essa chave do payload funcione?