Firebase admin SDKでユーザーを作成した後、確認メールを送信するにはどうすればよいですか?組み合わせようとしています createUser function
および sendEmailVerification function
誰かがヒントや答えを示すことができますか?ありがとう
ユーザーの作成は、アプリに既にサインインしている管理者ユーザーによって行われているため、管理者ユーザーはダッシュボード上でユーザーを作成しているだけです。これは、登録方法とはまったく異なります。
私は従おうとしました bojeilの答え 、私はまだユーザーがカスタムトークンでサインインするステップで立ち往生しています。現在の管理者ユーザーセッションと競合し、管理者ユーザーが追い出され、代わりに新しいユーザーがサインインします。新しいユーザーをサインアウトしても、管理者ユーザーはまだアウトであり、再度ログインするにはサインインする必要があります。アプリ。
カスタムトークンを取得した後のアプリ内のコードは次のとおりです。
$http.post('/.custom-token', {uid: $scope.data.data.uid})
.then(function (response) {
console.log("custom token here:", response.data.token);
firebase.auth().signInWithCustomToken(response.data.token)
.then(function (firebaseUser) {
firebaseUser.sendEmailVerification();
firebase.auth().signOut().then(function() {
// Sign-out successful.
console.log("signed out success");
}, function(error) {
// An error happened.
});
})
.catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// ...
});
});
そのため、トークンを取得し、新しいユーザーにサインインし、メール確認リンクを送信してから、新しいユーザーをサインアウトします。しかし、これらすべてを実行している私の管理者ユーザーもサインアウトされます。ここで何が欠けていますか?
OKこれはあなたができることですが、クォータの制限に達する可能性があります。
かなりクリーンな解決策は、実際にREST APIを使用することです。
curl 'https://www.googleapis.com/identitytoolkit/v3/relyingparty/getOobConfirmationCode?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary '{"requestType":"PASSWORD_RESET","email":"[[email protected]]"}'
[API KEY]は、プロジェクト設定から取得できるWebクライアントAPIキーです>アプリを追加します>> Webをクリックすると、JSONを使用して構成を取得します。JSON内に必要なAPIKeyがあります使用する。
このためにFirebaseAdminSDKを使用する必要はありません。通常のFirebaseクライアント側SDKを使用できます。
firebase.auth().createUserWithEmailAndPassword(email, password)
.then(function(user) {
console.log("User successfully created:", user.uid);
return user.sendEmailVerification();
})
.then(function() {
console.log("Email verification email successfully sent!");
})
.catch(function(error) {
console.log("Error:", error);
});
Firebaseによると、admin-sdkは現在この機能をサポートしていません。ここで彼らの応答を参照してください: https://stackoverflow.com/a/44557980/8177355
電子メール/パスワード認証ユーザーがログインし、認証を必要とする機能を使用しようとするたびに、onAuthStateChanged()を呼び出して、電子メールの検証のためにユーザーのレコードを確認します。
メールが確認されておらず、以前に確認メールを送信したことがない場合は、自動的に送信します。ユーザーにメールの確認を求めるエラーを返します。 (変数をfirestoreのユーザーのプロファイル設定に保存して、以前に送信されたかどうかを示します)。
今後アプリを使用しようとしても、メールがまだ確認されない場合は、同じエラーが返されます。また、エラーに「確認メールを再送信」というラベルの付いたボタンが含まれ、押されたときに確認メールの送信がトリガーされます。 (このようにして、ユーザーが何かをしようとするたびに、大量の確認メールを自動的に送信することはありません。)