ユーザーごとの API キーを取得するためのガイドラインに従っています:User API keys specification
手順はすべて完了しました。クライアントが公開鍵/秘密鍵のペアとリダイレクト URL を生成し、Discourse のルートに移動し、ユーザーがアプリの利用を Discourse に承認し、Discourse が API キーを生成します。
しかし、Discourse がリダイレクト URL の「ペイロード」として API キーを返した際、そのキーが機能しません。復号化を試みますが、成功しません。
そのキーをいくつかの標準的な JavaScript 復号化(例えば こちら の回答にあるようなもの)に適用すると、「length is invalid」エラー(または使用している復号化 JavaScript メソッドによっては DATA_LEN_NOT_EQUAL_TO_MOD_LEN)が表示されます。
対処法に関するアイデアはありますか?
これは重要な機能の一部ですので、ご支援いただければ大変助かります。
ペイロードに含まれるキーを何らかの方法で変更する必要がありますか?ペイロードに含まれるキーが機能しない可能性があるのでしょうか?
もう少し詳細を:
私の全体的手法は正しいと考えています。なぜなら、Discourse はユーザーごとのキーを取得する別の方法を提供しており、そのキーは復号化できるからです:
Discourse へのリクエストからリダイレクト URL を省略すると、Discourse はリダイレクトを行いません。代わりに、ユーザーがコピーできるように画面上にキーを表示します。
そのキーは「ペイロード」に含まれるキーよりも短いです(約 684 文字で、ペイロードのキーは約 762 文字です)。そして、そのキーは機能します。JavaScript を使って正常に復号化できます。
しかし、ユーザーに API キーをコピー&ペーストさせるのは混乱を招きます。適切なフローはペイロードからキーを取得することです。そのペイロードのキーを機能させるにはどうすればよいでしょうか?