Olá @simon, obrigado pela sua resposta. Deixe-me explicar nosso caso com mais detalhes.
Estamos construindo um aplicativo móvel que depende da lógica de backend dos endpoints do Discourse. Quando um usuário faz login através do aplicativo, os dados de login são enviados para a API do Discourse via session.json, que retorna um cookie. Este cookie é então usado para redirecionar o webview para /user-api-key/new, solicitando que o usuário aprove a autorização. Após a aprovação, o payload é descriptografado em chaves de API.
Neste caso, podemos usar as chaves de API como um token global dentro do aplicativo móvel para acessar outros endpoints do Discourse. No entanto, quando o usuário faz logout, o token deve ser removido do estado global para que ele não possa acessar endpoints como a criação de um novo tópico.
Minha pergunta é sobre este tópico: como podemos verificar se um usuário já possui user_api_keys e se elas ainda estão ativas? Se as chaves existirem e estiverem ativas, o usuário poderá usá-las após o login. Caso contrário, o usuário precisará criar novas user_api_keys, o que exigiria aprovação no webview.
Este é o principal problema que estou enfrentando.
Outra solução que considerei, com base em uma postagem de Como recuperar o valor das chaves de API do usuário via API, é armazenar as chaves de API no banco de dados do nosso aplicativo móvel.
Também me referi à postagem Gerar chave de API de usuário sem aprovação do usuário - #2 por simon, que inicialmente consultei para implementação de chaves de API. No entanto, o problema permanece o mesmo: quando verificamos /admin/api/keys, não conseguimos recuperar o valor das chaves de API já salvas no banco de dados ou obter chaves de API por usuário. Acredito que, para esta implementação, precisaríamos armazenar as chaves de API em nosso próprio banco de dados.