2017-08-06 7 views
1

私の利用事例は、新しくサインアップしたユーザーに名前のような基本情報を豊かにするように頼むことです。 は、だから私は好きなことを行うには期待していた。Firebase認証、既存のユーザーではなく新しいユーザーがサインアップされたことを知る方法?

firebase.auth().onAuthStateChanged(function(user) { 
    if (user) { 
    // User is signed in. 
    if (some indicator tells me it is newly signed up user) 
     {redirect to a form to fill in more info} 
    } else { 
    // No user is signed in. 
    } 
}); 

私は、ドキュメントをチェックし、...事前に助けを

感謝をこれに関連する何かを見つけることができませんでした。

+0

私はDBに 'onboarded'フィールドを使ってユーザを保存します。私は、彼らが続行する前に船に乗っていたことを確認するためにこれをチェックします。このための認証状態には、「すぐに使える」機能はありません。 – theblindprophet

答えて

2

バージョン4.6.0以来:ユーザーが新しいか2通りの方法で既存のであればhttps://firebase.google.com/support/release-notes/js#4.6.0 はあなたが得ることができます:あなたが戻ってUserCredential結果を取得している場合は

  1. result.additionalUserInfo.isNewUser

  2. チェックをチェックfirebase.auth().currentUser.metadata.creationTime === firebase.auth().currentUser.metadata.lastSignInTime

以前はあなた自身とキーでこれを行う必要がありましたFirebase Realtime Databaseを使用しているユーザのpトラックに保存されます。ユーザーがサインインすると、指定されたuidを持つユーザーがデータベースに存在するかどうかをチェックします。ユーザーが見つからなかった場合は新しいユーザーになり、そのユーザーをデータベースに追加できます。ユーザーがすでにデータベースに入っている場合、これは既存のユーザーを戻します。ここにiOSの例があります。あなたが行うことができます

Handing Firebase + Facebook login process

+0

ありがとうございます。これまでの唯一のアイデアでもあります。私はauth自身がAPIを提供したいと思っていました:)結局​​のところ、Firebaseの認証コンソールには、登録されたユーザのリストがあります。私がauthコンソールのリストに対してuidを直接チェックできるなら、それはすばらしいことでしょう。しかしちょうど希望的な考え... – LeonTan

+0

Firebaseは、ユーザーが新規か既存かを確認するためのフラグを追加しました:https://firebase.google.com/support/release-notes/js#4.6.0 – bojeil

+0

私はそれをここで見つけました:task .getResult()。getAdditionalUserInfo()。isNewUser() –

1

ことの一つは、サインアップ機能のコールバック関数の中で物事を行う、サインアップ機能が約束を返すんです。あなたはこのような何かを行うことができます。

firebase.auth().createUserWithEmailAndPassword(email, password) 
.then(function(user) { 
    //I believe the user variable here is the same as firebase.auth().currentUser 
    //take the user to some form you want them to fill 
}) 
.catch(function(error) { 
    // Handle Errors here. 
    var errorCode = error.code; 
    var errorMessage = error.message; 
    // ... 
}); 

enter image description here

はしかし、私は実際にクライアント側のコードが信頼できない可能性があるため、このようにそれをやってお勧めしません。フォームを記入する前にユーザーが突然切断した場合はどうなるか考えてみてください。彼らのデータはあなたのデータベースでは不完全です。このようにすれば、フォームを送信するときにユーザーのプロファイルにフラグを設定し、詳細な情報を入力した人と入力しなかった人を知ることができます。

これを行うもう1つのより良い方法は、firebaseクラウド機能の使用です。クラウドの機能には、このようなコードを入れることができます。クラウド関数はnode.jsで書かれているため、別の言語に時間を費やす必要はありません。

exports.someoneSignedUp = functions.auth.user().onCreate(event => { 
    // you can send them a cloud function to lead them to the detail information form 
    //or you can send them an welcome email which will also lead them to where you want them to fill detailed information 
}); 

この方法は、クラウド機能サーバーがダウンしたり危険にさらされたりすることはないと思いますので、はるかに優れています。クラウド機能の詳細については、そのドキュメントを参照してください。https://firebase.google.com/docs/functions/auth-events

関連する問題