2017-11-05 12 views
1

私はドキュメントのようにユーザーの電子メールの確認を処理します。ユーザーがリンクをクリックして電子メールを確認すると、ログインする必要もありますか?このプロセスの後、コンソールで "firebase.auth()。currentUser"をチェックすると、nullが返されるためです。私はそれが確認リンクをクリックした後に自動的にログインすると思います。Firebaseでユーザーの電子メールの確認をしてからログインする必要はありますか?

function handleVerifyEmail(auth, actionCode, continueUrl) { 
    // Try to apply the email verification code. 
    auth.applyActionCode(actionCode).then(function(resp) { 
    // Email address has been verified. 

    // TODO: Display a confirmation message to the user. 
    // You could also provide the user with a link back to the app. 

    // TODO: If a continue URL is available, display a button which on 
    // click redirects the user back to the app via continueUrl with 
    // additional state determined from that URL's parameters. 
    }).catch(function(error) { 
    // 
    }); 
} 

答えて

1

電子メールによる確認は自動ログインしません。それはユーザーの電子メールを確認するだけです。

  1. ユーザーが同じデバイス上でリンクを開くと、それはユーザが最初にログインし、同じブラウザで開くと、電子メールの確認を送ったが、別のアプリでされています あなたはここ2つの状況を持っています。継続URLは、ユーザーが最初にログインしたページと同じドメインのページに戻ります。この場合、ユーザーはログインします。
  2. ユーザーは別のデバイスまたはブラウザーでリンクを開きます。その場合、ユーザーはログインしていません。ユーザーが続行URLをクリックしてリダイレクトされた後、ユーザーに再度ログインする必要があります。電子メールの検証が異なるドメインに起こるかもしれませんまたは電子メールは悪い考えかもしれ検証後のアクション・コールバック・ページ上のユーザーでログインし、モバイルアプリからトリガされた可能性があり、未認証を残すことができるのよう

状態。

+0

返信いただきありがとうございます。私は実際にユーザーが自分の電子メールを確認するときにいくつかのデータベース操作をトリガーしたいと思う。しかし、Firebaseは残念なことに電子メールの検証を聞いていないので、ログインしているユーザだけを許可するhttpsエンドポイントで処理することに決めました。しかし、ユーザーが別のデバイスやブラウザ上で確認リンクをクリックするとFirebaseが自動的にログインしないように見えるので、httpsエンドポイントはそれらを許可しません。私はユーザーの最初のサインインを聞くと思うかもしれませんが、Firebaseのドキュメントは "電子メールパス"アカウントではなく "連合アイデンティティプロバイダ"のみをサポートしていると言います。提案はありますか? –

+0

電子メールの検証フローは、ユーザーにサインインする方法ではありません。これは、メールの所有権を確認するためのメカニズムにすぎません。 Firebaseの文書では、「電子メールパス」アカウントではなく「連合アイデンティティプロバイダ」のみをサポートしていると言われています。アクションコードをHTTPエンドポイントに渡すことができます。ここでnode.jsクライアントsdkを使用して「checkActionCode」を呼び出してユーザー情報を取得し、次に「applyActionCode」を使用して検証を完了します。成功した場合のみ、Firebase Admin node.js SDKを使用して、管理者権限を持つユーザに必要なデータベース変更を行うことができます。 – bojeil

関連する問題