Je suis en train de suivre les directives pour obtenir des clés API par utilisateur : User API keys specification.
J’ai parcouru les étapes : le client génère une paire de clés publique/privée et une URL de retour, se rend à une route Discourse, l’utilisateur donne son accord à Discourse pour utiliser l’application, et Discourse génère une clé API.
Mais lorsque Discourse renvoie la clé API sous forme de « payload » dans l’URL de retour, cette clé ne fonctionne pas. J’essaie de la déchiffrer, mais je n’y arrive pas.
J’intègre cette clé dans un déchiffrement JavaScript standard (comme dans la réponse ici), et j’obtiens une erreur « length is invalid » (ou DATA_LEN_NOT_EQUAL_TO_MOD_LEN, selon la méthode de déchiffrement JavaScript que j’utilise).
Avez-vous des idées sur la façon de résoudre ce problème ?
Il s’agit d’une fonctionnalité cruciale, donc toute aide est vraiment appréciée.
Dois-je modifier la clé fournie dans le payload d’une certaine manière ? Est-il possible que la clé fournie dans le payload ne fonctionne pas ?
Un peu plus de détails :
Je pense que ma méthode globale est correcte, car Discourse propose une autre méthode pour obtenir une clé par utilisateur, et je parviens à déchiffrer cette clé :
Si j’omets l’URL de redirection dans la requête à Discourse, Discourse ne redirige pas. À la place, il affiche une clé à l’écran pour que l’utilisateur la copie.
Cette clé est plus courte que celle fournie dans un « payload » (elle fait environ 684 caractères, tandis que la clé du payload fait environ 762). Et cette clé fonctionne — je parviens à la déchiffrer sans problème avec JavaScript.
Mais demander à l’utilisateur de copier-coller une clé API est déroutant pour les utilisateurs — le flux approprié consiste à obtenir la clé depuis le payload. Comment faire en sorte que la clé du payload fonctionne ?