私はangularfireプロジェクトに取り組んでいますが、Firebase 3でユーザーを作成する方法を知りたいのですが、完了したら、指定したユーザーを認証しないでください。以前のFirebaseバージョンでは、createUser(email、password)というメソッドがありました。これで、createUserWithEmailAndPassword(email、password)メソッドのみが作成され、指定されたユーザーが作成および認証されます。
質問への答えは次のとおりです:あなたはできません。
他のユーザーを作成できる「admin」ユーザーがいる場合も同様の状況です。 2.xではこれは簡単でした。 3.xでは、その機能が完全に削除されたため、失敗します。
3.xでユーザーを作成する場合は、そのユーザーとして認証し、ログインしているアカウントの認証を解除します。
別のユーザーを作成するには再認証が必要になるため、これはさらに深くなります。したがって、管理者はそれを手動で行うか、(cringe)認証データをローカルに保存して、自動化されたプロセスにすることができます(cringe cringe、これは行わないでください)
Firebaseは、2.xは引き続きサポートされることを公に強調しているため、3.xは避けたいと思うかもしれません。
更新:
firebaserの1つは、実際にこれに関する回避策を考え出しました。概念的には、管理者ユーザーがログインしていました。次に、firebaseへの2番目の接続を作成し、別のユーザーで認証すると、その接続によって新しいユーザーが作成されます。すすぎ-繰り返します。
再度更新
この質問と回答を参照してください
これは、クラウド機能とFirebase AdminSDKを使用して実行できます。以下のようなHTTP関数を作成します。
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
// // Create and Deploy Your First Cloud Functions
// // https://firebase.google.com/docs/functions/write-firebase-functions
//
exports.createUser = functions.https.onRequest((request, response) => {
if (request.method !== "POST") {
response.status(405).send("Method Not Allowed");
} else {
let body = request.body;
const email = body.email;
const password = body.password;
const displayName = body.displayName;
admin.auth().createUser({
email: email,
emailVerified: false,
password: password,
displayName: displayName,
disabled: false
})
.then((userRecord) => {
return response.status(200).send("Successfully created new user: " +userRecord.uid);
})
.catch((error) => {
return response.status(400).send("Failed to create user: " + error);
});
}
});
クライアントアプリで、たとえばajaxを使用して、Httpリクエストを使用してこの関数を呼び出します
$.ajax({
url: "the url generated by cloud function",
type: "POST",
data: {
email: email,
password: password,
displayName: name
},
success: function(response) {
console.log(response);
},
error: function(xhr, status, error) {
let err = JSON.parse(xhr.responseText);
console.log(err.Message);
}
});