結論から言うと
モバイルアプリが、忘れたパスワードを実際に再設定できる唯一のルートです。サインイン画面で「パスワードをお忘れですか?(Forgot password?)」を選び、アカウントに登録されているメールアドレスを入力すると、Whiziが6桁のコードをメールで送ります。次の画面でそのコードと新しいパスワードを入力します。ウェブサイト側のルートは同じラベルを持つ別物です。そこでの「パスワードをお忘れですか?」は、プロバイダーにemail_linkによるサインインメールをwhizi.io/reset-passwordへ向けて送るよう依頼するだけで、/reset-passwordは最初の項目が現在のパスワードになっている変更フォームです。つまりウェブサイト側は、今も知っているパスワードを変更するための仕組みです。ウェブサイトのパスワードが本当にわからなくなった場合は、メールで届くリンクではなく、アプリ側のルートかサポートへの問い合わせが戻る道になります。
リセットを開始できる場所は4か所あり、それぞれ挙動が異なります。
| 開始する場所 | 操作 | 送られるもの | 先にサインアウトされるか |
|---|---|---|---|
| ウェブサイトのサインインページ | パスワードのラベル行にある「パスワードをお忘れですか?(Forgot password?)」 | /reset-password宛てのemail_linkサインインメール | いいえ |
| ウェブサイトの設定、アカウントセクション | 「パスワードをリセット(Reset Password)」 | 同じメールリンクを同じアドレスへ | はい、送信リンクを送るを選んだ瞬間に |
| モバイルアプリのサインイン画面 | 「パスワードをお忘れですか?(Forgot password?)」 | 6桁のコード | この時点ですでにサインアウト済み |
| モバイルアプリの設定 | パスワードをリセット、確認を挟んで実行 | 6桁のコード | はい、確認後に |
使う前に知っておきたいのは2番目の行です。この操作は、メール欄に何か入力されているかを確認するより先に、その場でWhiziからサインアウトさせます。
Whiziは独自のリセット画面を用意している
認証はClerkが提供していますが、画面自体はClerkがホストするページではありません。サインインページのリセットダイアログ、/reset-passwordにある変更フォーム、モバイルのサインイン画面内にあるリセット手順は、いずれも裏でプロバイダーを呼び出すWhizi独自の画面であり、入力するフォームはプロバイダーがホストするページではなくWhiziのコードです。
この分担によって、何か失敗したときにどの文言が表示されるかが決まります。これらの画面はすべて、読める形のメッセージがあればプロバイダーのメッセージを優先し、なければWhizi独自の文言にフォールバックします。そのためパスワードの長さや強度に関する拒否メッセージは、届いたままのプロバイダーの文言で表示されます。フォールバックは画面ごとに異なり、サポートのやり取りで失敗がどこで起きたかを見分ける一番早い方法になります。
| 画面 | 読める形のメッセージが返らなかった場合のフォールバック |
|---|---|
| ウェブサイトのリセットダイアログ、サインインページと設定 | Failed to send reset email. Please try again. |
ウェブサイトの変更フォーム(/reset-password) | Failed to reset password. Please try again. |
| モバイルのサインイン画面にある両方のリセット手順 | Couldn't sign in. Please try again. |
Whiziが自分自身で用意しているチェックは薄く、かつ偏って配置されています。ウェブサイトの変更フォームは、現在のパスワード欄が入力されていることと、新しいパスワードの2つの入力が一致することを要求します。モバイルのリセット手順はチェックを一切行いません。新しいパスワードの欄が1つあるだけで、入力された内容をそのまま送信します。フロー全体でWhiziが行うその他の唯一のチェックは、ウェブサイトの両方のダイアログとアプリの最初のリセット手順で、メール欄が空でないことだけです。最小文字数、使用可能な文字、再利用禁止といったルールはWhiziにはまったく組み込まれていません。それらはすべてプロバイダー側にあり、引用されたメッセージを通じて表示されます。
サインイン、セッション、リセットに関するエラー文言の一覧と、それぞれが発生するきっかけについては、サインインできないときにまとめてあります。このページはフロー自体を扱い、そちらのページは文言を扱います。
設定から始めると先にサインアウトされる
ウェブサイトでは、設定のアカウントセクションに、サブスクリプションやサブスクリプションの解約と並んで「パスワードをリセット(Reset Password)」という行があります。これを選ぶと、メールアドレス欄と「送信リンクを送る(Send Reset Link)」ボタンを持つダイアログが開きます。
このボタンを選ぶと、他の何よりも先にWhiziからサインアウトされます。サインアウトが先に実行され、そのあとでメール欄が入力されているかどうかがチェックされます。空欄のまま送信すると、何も送られないままサインアウトされてしまい、戻る手段はサインインページしかありません。
ダイアログが開いた時点でもこの欄は空欄です。サインインしているアカウントのアドレスが自動で入力されるわけではないので、サインアウトされたあとではなく、開く前にアドレスを手元に用意しておく必要があります。
成功時のメッセージは開始した場所によって異なり、サポートのやり取りで2つのルートを見分ける手早い方法になります。
| 画面 | 成功時のメッセージ |
|---|---|
| サインインページのダイアログ | Check your inbox for a reset link. |
| 設定のダイアログ | Password reset email sent successfully! |
モバイルアプリも同じ「先にサインアウトする」仕組みを採用していますが、事前に知らせてくれます。リセットを選ぶと「パスワードをリセットしますか?(Reset your password?)」というタイトルの確認画面が表示され、本文にはWhiziがサインアウトさせたうえでアカウントのアドレス宛てに6桁のコードをメールで送ることが、そのアドレスを明記した文章で説明されます。そのあと次の画面でコードを入力し、新しいパスワードを設定するよう案内されます。ボタンは「キャンセル(Cancel)」と「サインアウトしてリセット(Sign out and reset)」です。サインアウトをまたいでもアドレスは引き継がれるため、リセット画面は最初から入力済みの状態で開きます。ウェブサイトはどちらも行いません。
モバイルアプリが送るのはリンクではなくコード
アプリでのリセットはサインイン画面上の2ステップのフローで、最後にはサインインした状態になるため、2つのルートのうちより予測しやすい方です。
- 最初のステップではアドレスを尋ねられます。空欄のまま送信すると、画面には
Enter the email address on your account.と表示されます。
- Whiziがコードをリクエストし、
We sent a 6-digit code toに続けて入力したアドレスを表示して確認します。
- 2つ目のステップでは、コードと新しいパスワードを一緒に入力します。成功すると、アプリは新しいセッションを有効にしてそのままWhiziに入れます。そのあとに別途サインインする必要はありません。
この方法だけでは完了できないアカウント種別が1つあります。アカウントに2つ目の検証要素が設定されている場合、アプリにはそれ用の画面がなく、「このアカウントにはもう1つの検証手順が必要です。サポートまでご連絡いただければ、お手伝いします。」と表示されます。これは再試行を促す表示ではなく、実際の案内です。
戻ってきたときのプランや会話履歴を含め、アプリがウェブサイトと共有しているそのほかの部分については、Whiziをモバイルで使うにまとめてあります。
すでに知っているパスワードを変更する場合
ウェブサイトの/reset-passwordは、復旧フォームではなく変更フォームです。現在のパスワード、新しいパスワード、新しいパスワードの確認という3つの欄があり、最初の欄が空だとCurrent password is required.、後ろの2つが一致しないとPasswords do not match.と表示されて実行を拒否します。
変更に成功すると、アカウントの他のすべてのセッションが終了します。このフォームは更新の一環として、プロバイダーに他のセッションからサインアウトさせるよう依頼するため、Whiziのセッションを保持している他のブラウザや端末は、単に放置されるのではなく、この変更によってサインアウトされます。これは無音で行われます。フォーム上には何も告知されず、それを知らせるメッセージも一切生成されません。この画面が表示できる文言は、2つの検証エラーと、プロバイダー自身の拒否メッセージ、そして下記の成功メッセージだけです。共有のパソコンでパスワードを変更する前に、このことを覚えておいてください。
成功すると、画面にはPassword reset successful! Redirecting to chat...と表示され、2秒の間を置いてチャットページに移動します。
このURLをアドレスバーに直接入力しても、たどり着くことはできません。このルートは、サインイン済みの訪問者をチャットページへ送るガードの内側にあり、/reset-passwordはそのガードの対象外である4つのパス(設定、料金、利用規約、プライバシーポリシー)のいずれにも含まれません。サインアウト状態で訪れると、フォームの代わりにUser not authenticated. Please log in.が表示されます。サインインページのダイアログと設定のダイアログは、どちらも同じアドレス宛てに同じメールリンクを送るだけなので、現在のパスワード欄を回避する手段にもなりません。
パスワードのリセットで解決しないこと
新しいパスワードは資格情報を置き換えるだけです。多くの人が解決すると期待する4つのことは、リセットでは解決しません。
| 望んでいること | リセットで解決するか |
|---|---|
Invalid or expired session token.のようなセッショントークンエラーを解消する | いいえ。これはトークンの検証に失敗している状態で、サインインできないときで扱っています |
| サインインに使うメールアドレスを変更する | いいえ。アドレスを自分で変更できる手段はそもそもありません。アカウントのメールアドレスを変更するを参照してください |
| 使い切った無料メッセージを取り戻す | いいえ。無料枠はアカウントが存在する間ずっと7メッセージで、リセットの手段はありません |
| サブスクリプションを別のアカウントへ移す | いいえ。プランはパスワードではなくアカウントに紐づいています |
アカウント自体のメールアドレスがもう読めないものである場合、リセットのルートもそれと一緒に失われます。リンクもコードも、どちらもそのメールアドレスに届くからです。古いメールアドレスがまだ使えるうちに、あとではなく今すぐサポートに連絡してください。
- 「パスワードをお忘れですか?(Forgot password?)」はウェブサイトのサインインページのパスワードのラベル行にあり、選ぶとパスワードのリセットダイアログが開く
- アプリではメールとパスワードの入力欄の下にある右寄せのリンクで、それらの欄にはラベルがなくプレースホルダーだけが表示されている
- ウェブサイトは
/reset-password宛てのサインインリンクをメールで送り、モバイルアプリは6桁のコードをメールで送る - 設定の「パスワードをリセット」は、送信する前に、そしてメール欄が入力されているか確認する前に、まずサインアウトさせる
- ウェブサイトのリセット欄は決して入力済みではないので、アカウントのアドレスをあらかじめ用意しておく
- モバイルアプリは事前に警告し、アドレスを自動入力し、リセットが完了するとサインインした状態になる
- ウェブサイトの変更フォームは現在のパスワード欄が入力されていることと新しい入力が一致することを確認するが、モバイルのリセット手順は何もチェックせず、長さや強度のルールはすべて認証プロバイダー側にある
- 知っているパスワードを変更すると、アカウントの他のすべてのセッションがサインアウトされる
- リセットではセッショントークンのエラーは解消されず、メールアドレスも変更されず、使った無料メッセージも戻らない
よくある質問
WhiziのForgot passwordはどこにありますか?
ウェブサイトではサインイン画面にあり、パスワードのラベルと同じ行、その右側に配置されていて、選ぶと「パスワードをリセット(Reset password)」というタイトルの、メール欄が1つと「リセットリンクを送る(Send reset link)」ボタンだけのダイアログが開きます。モバイルアプリでは配置が異なり、サインイン欄にはラベルがなくプレースホルダーしかないため、「パスワードをお忘れですか?」はメールとパスワードの入力欄の下にある独立した行の右寄せリンクになっています。どちらもサインインしている必要はなく、別の復旧用URLを探す必要もありません。
設定のリセットでサインアウトされるのは、失敗したということですか?
いいえ。サインアウトは、メールの送信を試みるより前にこのルートが最初に行うことなので、送信が成功しても失敗しても必ず起こります。ダイアログに表示されるPassword reset email sent successfully!が、実際に送信できたことの確認になります。この表示が出ない場合は、サインインページから再度サインインし、そちらでリセットをやり直してください。
パスワードをリセットすると、他の端末でもサインアウトされますか?
はい、/reset-passwordの変更フォームから変更した場合はそうなります。この更新は変更の一環として認証プロバイダーに他のセッションからのサインアウトを依頼するため、Whiziのセッションを保持している他のブラウザや端末はそれを失います。事前に警告も、事後の通知も一切ないので、パスワードを変更する前に、他にどこでサインインしているかを確認しておいてください。
Googleでサインインしています。何のパスワードをリセットすることになりますか?
Whiziはアカウントがどう作成されたかで処理を分けていません。リセットダイアログはメールアドレスを受け取り、プロバイダーにリセットの送信を依頼し、プロバイダーが返してきた内容をそのまま表示します。「Googleで続ける(Continue with Google)」がこれまでの唯一のサインイン方法であれば、そのボタンはサインインページにあり、パスワードはまったく必要ないため、そちらのほうが早く戻る方法になります。プロバイダーがリセットを拒否した場合、返ってきたメッセージが正確な説明なので、サポートにそのまま引用して伝える価値があります。
パスワードをリセットすると無料メッセージは戻ってきますか?
いいえ、そもそもその必要はありません。無料枠は自動で補充される仕組みで、初日は7メッセージ、それ以降は毎日UTC深夜0時に3メッセージが追加されます。資格情報に関する操作は、このカウンターにはいっさい影響しません。1日分を使い切ったときにアプリが表示する内容は「クレジット切れについて」、有料プランの上限は「プランと利用上限」のページで確認できます。