Salut @simon, merci pour ta réponse. Laisse-moi t’expliquer notre cas plus en détail.
Nous construisons une application mobile qui repose sur la logique backend des points d’accès Discourse. Lorsqu’un utilisateur se connecte via l’application, les données de connexion sont envoyées à l’API Discourse via session.json, qui renvoie un cookie. Ce cookie est ensuite utilisé pour rediriger la webview vers /user-api-key/new, invitant l’utilisateur à approuver l’autorisation. Après approbation, la charge utile est déchiffrée en clés API.
Dans ce cas, nous pouvons utiliser les clés API comme un jeton global dans l’application mobile pour accéder à d’autres points d’accès Discourse. Cependant, lorsque l’utilisateur se déconnecte, le jeton doit être supprimé de l’état global afin qu’il ne puisse pas accéder à des points d’accès tels que la création d’un nouveau sujet.
Ma question porte sur ce sujet : comment pouvons-nous vérifier si un utilisateur possède déjà des user_api_keys et s’ils sont toujours actifs ? Si les clés existent et sont actives, l’utilisateur devrait pouvoir les utiliser après la connexion. Sinon, l’utilisateur devra créer de nouvelles user_api_keys, ce qui nécessiterait une approbation dans la webview.
C’est le principal problème que je rencontre.
Une autre solution que j’ai envisagée, basée sur un post de Comment récupérer la valeur des clés API utilisateur via l’API, est de stocker les clés API dans la base de données de notre application mobile.
J’ai également consulté le post Générer une clé API utilisateur sans approbation de l’utilisateur - #2 par simon, que j’avais initialement consulté pour l’implémentation des clés API. Cependant, le problème reste le même : lorsque je vérifie /admin/api/keys, nous ne pouvons pas récupérer la valeur des clés API déjà enregistrées dans la base de données ni obtenir les clés API par utilisateur. Je pense que, pour cette implémentation, nous devrions stocker les clés API dans notre propre base de données.