Discourse ウェブサイトへの自動ログイン

何をしてほしいですか?

モバイルアプリを持っています。認証元は Discourse です。モバイルアプリにログインするには、ユーザー名とパスワードを入力する必要があります。その後、Discourse にログイン API リクエストを送信してユーザーを認証します。

現在、モバイルアプリ内に Discourse フォーラムへのリンクがいくつかあります。ユーザーがこれらのリンクをクリックした際に、自動的にフォーラムにログインさせたいと考えています。現在、ユーザーはアプリにログインする際と、フォーラムにログインする際の 2 回、パスワードを入力する必要があり、これは非常にユーザーエクスペリエンスが悪いです。

メールで送られるリンクによるパスワードレスログインが可能であることを考えると、この手順も実現可能だと考えられます。シンプルなプラグインで実現できるかもしれません。

いつまでに完了する必要がありますか?
1 週間

このタスクに対して提示できる予算(米ドル)はいくらですか?
300 ドル

「いいね!」 2

それは不可能ですか?それともオファーが低いのでしょうか? :thinking:

こんにちは :slight_smile:

実は、これは見た目以上に複雑な問題です。

メールによるログインの仕組みは、ログインモーダル内の「メールでログイン」ボタンをクリックすると、そのユーザー固有のトークンが生成され、email_tokens に保存されるというものです。そのトークンはリンク(数字と文字の並び)に含まれています。

http://localhost:3000/session/email-login/69c4953ff0726b5f4c2b26c1e3563b79

アプリ内のリンクには、ユーザーがログインするたびにこのトークンを生成する必要があります。現時点では、この機能は API を通じて公開されていないと思うので(?)、まずエンドポイントを設定する必要があります。

そのエンドポイントは認証によって保護されている必要があります。アプリ側でその処理を行う方法が必要です。もしかしたら、すでに実装済みかもしれませんね。

さらに、トークンの有効期限についても考慮する必要があります。トークンはどのくらいの期間有効にすべきか?期限が切れたら、新しいトークンを取得してリンクを更新する方法はどうするか?

この機能を後付けで実装するよりも、もっと良い解決策がありそうな気がします。

はい、私もまさに同じことを考えていました。メールでのログインが既に実装されている以上、それも可能はずです。実際の実装についてはわかりませんが、プラグインで対応するのが良いかもしれません。もし可能なら、教えてください。

はい、認証は Discourse のログイン API で行われています。問題はありません。

メールでのログインリンクには有効期限の設定はありますか?それと同じもの、あるいは類似のものを利用できます。
新しいトークンを取得する処理などは、アプリ側で行う予定です。

はい、メールトークンの有効期限は「メールトークンの有効時間」というサイト設定で決まります。

つまり、ユーザーに対してメールトークンを生成して返すエンドポイントを追加するプラグインを作成し、トークンが期限切れになるたびにそれを定期的に呼び出したい、ということですね?

それで私の要件は満たせます。

また、特定のトピックへユーザーを誘導したいので、トピック ID またはリンクを追加し、ログイン後にそのトピックへリダイレクトされるようにすれば、完璧です。

別のアプローチとして、アプリ内のリンクを独自のバックエンドに指向させる方法もあります。ユーザーがリンクをクリックした時点で適切なリンクが生成され、クライアントが何らかの形で正しい場所にリダイレクトされる仕組みです。

これにより、ユーザーがリンクをクリックする前に認証リンクを生成する必要がなくなります。

「いいね!」 1

そうですね、アプリ側の処理としてはおそらくより効率的でしょう。ただ、Discourse側のエンドポイントは同じままでしょうね。

「いいね!」 1

この方法で、ユーザーが認証されていることをどうやって確認すればよいですか?

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.