API経由でuser_api_keys値を取得する方法

こんにちは @simon、ご返信ありがとうございます。ケースについて詳しくご説明させてください。

私たちは、Discourseのエンドポイントからのバックエンドロジックに依存するモバイルアプリを構築しています。ユーザーがアプリを通じてログインすると、ログインデータが session.json を介してDiscourse APIに送信され、Cookieが返されます。このCookieは、その後、user-api-key/new へのリダイレクトに使用され、ユーザーに承認を求めます。承認後、ペイロードはAPIキーに復号化されます。

この場合、APIキーをモバイルアプリ内のグローバルなトークンとして使用して、他のDiscourseエンドポイントにアクセスできます。しかし、ユーザーがログアウトすると、新しいトピックの作成などのエンドポイントにアクセスできないように、トークンはグローバル状態から削除されるべきです。

私の質問は、このトピックからです。ユーザーがすでに user_api_keys を持っているかどうか、そしてそれらがまだアクティブかどうかを確認するにはどうすればよいですか?キーが存在し、アクティブであれば、ユーザーはログイン後にそれらを使用できるはずです。そうでない場合は、ユーザーは新しい user_api_keys を作成する必要があります。これには、WebViewでの承認が必要になります。

これが私が直面している主な問題です。

別の解決策として、How to Retrieve User API Keys Value via API の投稿に基づいて、APIキーをモバイルアプリのデータベースに保存することを検討しました。

また、APIキーの実装について最初に参照した、Generate User API Key Without User Approval - #2 by simon の投稿も参照しました。しかし、問題は同じままです。/admin/api/keys を確認すると、データベースにすでに保存されているAPIキーの値を取得したり、ユーザーごとのAPIキーを取得したりすることはできません。この実装のためには、APIキーを独自のデータベースに保存する必要があると考えています。