私のWebサイトをFirebaseと組み合わせてJavaScriptに書き直しています。これまでのところ、私はFirebaseが大好きですが、今では私はすべての古いユーザーをFirebaseシステムに移行する必要があります。Firebase認証 - ユーザーをSQLからFirebaseに移行
すべてのユーザーは特別な設定をしていますが、現在稼働しているサーバーを削除することはできません(€103、p/m)。だから私はすべてそれをコピーする必要があります。私が知る限り、それは一つずつ行う必要があります(createUserWithEmailAndPassword
)。サーバーでは、私は、JSONオブジェクトを作成し、私は新しいサイト上:
$.get("/alljsonfromalink", function (rdata) {
var $jData = jQuery.parseJSON(rdata);
var i = 0;
for (var user in $jData) {
whenYouFeelLikIt(user, $jData);
}
});
function whenYouFeelLikIt(i, $jData) {
setTimeout(function() {
firebase.auth().signInWithEmailAndPassword($jData[i].email, RandomPassword)
.then(function(){
console.log("Succes Login");
//if exist i set extra settings
setusersettings($jData[i], $jData[i].email);
})
.catch(function(error) {
var errorCode = error.code;
console.log(errorCode);
if(errorCode == "auth/user-not-found") {
firebase.auth().createUserWithEmailAndPassword($jData[i].email, RandomPassword).then(function() {
console.log("Created: " + $jData[i].email);
});
}
});
},2000 * (i));
}
それは動作しますが、それでも2秒のタイムアウトで、私は20または30を挿入した後に得た:
firebase.js:73 Uncaught Error: We have blocked all requests from this device due to unusual activity. Try again later.
誰でもこの問題を回避する方法がありますか? JamieBは.fetchProvidersForEmailを(使用することが提案
--Update--
)だから今、私は
firebase.auth().fetchProvidersForEmail($jData[i].email)
.then(function(succes){
console.log(succes.length);
if(succes.length == 0) {
// the createUserWithEmailAndPassword() with timeout
create(i, $jData);
}
})
あなたはおそらく使用して試みることができるhttps://firebase.google.com/docs/reference/js/firebase.auth .Auth#fetchProvidersForEmailは、ユーザーが存在するかどうかを確認する方法としてサインインするのではなく、 私はこれをテストすることはできませんが、APIを見れば、ユーザーが認証なしで存在するかどうかを判断する方法のように見えます。 – JamieB
ありがとう、少し助けてください。今私はもっと多くのユーザーを作成することができますが、Xインサート後もブロックされます。 – user1664803
すべてのユーザーを事前に作成する必要はありますか?あなたのWebサイトに最初にアクセスしたときにFirebaseで作成することはできませんか?あるいは、異なる/より高いレート制限を持つかもしれない 'createUserWithEmailAndPassword()'で始めることができます。 –