私はAngularFire2認証を使用しています。すべて正常に動作しています。今私が達成したいのは、ユーザーがすでにユーザーリストに入っていることを確認し、次回フェイスブックログインボタンをクリックしたときにlastLoginを更新することだけです。AngularFire2の機能を停止するには?
これ以外の新しいユーザーを作成します。
これは問題なく動作します。しかし、データベースの更新後にupdateLogin()/ _addUser()関数が停止するのを止めることはできません。
それはちょうど行くつもりです。 (89 ...)auth.service.ts:98は正常にログインしました!ここで
はupdateLogin(ある)
private _updateLogIn(thisurl, data) {
return thisurl.update({
lastLogIn: firebase.database.ServerValue.TIMESTAMP,
avatar: data.photoURL
}).then((success) => {
console.log("successfully logged in!");
}); ;
}
私は次のように認証()関数でこれを呼び出す:
login(provider: string) {
this.af.auth.login({
provider: this._getProvider(provider)
}).then(
(success) => {
this.authenticate(success);
})
return;
}
authenticate(user: any): any {
if(!user) {
return {};
} else {
let data = user.auth.providerData[0];
this.api_url = this.af.database.object(`${this.path}/${user.auth.uid}`);
this._isUsers().subscribe(value => {
var filtered = value.filter(function(item) {
return item.uid === user.auth.uid;
});
if(filtered.length > 0){this._updateLogIn(this.api_url, data); return; }
else{ this._addUser(this.api_url, user, data); return;
}
});
return;
}
}
_isUsers(){
return this.usersList.map(snapshot => {
return snapshot;
});
}
private _addUser(thisurl, user, data){
return thisurl.set({
name: data.displayName,
username: data.displayName.replace(/ /g,"."),
avatar: data.photoURL,
email: data.email,
provider: data.providerId,
uid: user.auth.uid,
lastLogIn: firebase.database.ServerValue.TIMESTAMP
}).then((success) => {
console.log("successfully signed up!");
return;
});
}
私は一度だけに機能の実行を停止する方法は? これは基本的にブラウザタブをハックします。
(89 ...)auth.service.ts:98 successfully logged in!
あなたは '_isUsers'と' _addUser'の実装も含めるべきです。 – cartant
私はそれを追加しました! –
そこには 'createUser'もありません。あなたの質問に[mcve]を含めるか、関連するコードをすべて含めるようにしてください。 – cartant