私はGirebaseの新機能です。特定のユーザーにデータを挿入し、firebaseで自分のデータにアクセスする方法は?
Facebookでログインすると、自分のデータを取得してIDを取得し、Firebaseに入れます。次に、特定のIDに追加したいと、彼は付け加えました。 私はそのすべてを行うことに成功しましたが、ユーザーからログアウトしたときに再びログインし、すべてのデータが削除されます(彼のすべてのメモ)。
私はユーザーと一緒にログインするたびに、ID、名前、写真を見るためにFirebaseに再度電話するので、前に詳細を削除するだけなので、なぜ起こったのか理解しています。いわゆる毎回ホームページ:これは私のFacebookのログインコードのMy Firebase構造
あるので
オーケー
facebookLogin(){
Facebook.login(['email']).then((response) => {
let facebookCredential = firebase.auth.FacebookAuthProvider
.credential(response.authResponse.accessToken);
var that = this;
firebase.auth().signInWithCredential(facebookCredential)
.then((success) => {
console.log("Firebase success: " + JSON.stringify(success));
that.nav.setRoot(HomePage);
})
.catch((error) => {
console.log("Firebase failure: " + JSON.stringify(error));
});
}).catch((error) => { console.log(error) });
}
これはhome.ts (直前に説明している(それが正常に動作します)データのプロファイルを再度設定することになります。その問題の可能性があります)
import { Component } from '@angular/core';
import { NavController,NavParams,LoadingController,AlertController,ViewController } from 'ionic-angular';
import { Facebook } from 'ionic-native';
//import pages
import {LoginPage} from "../../pages/login/login";
import {User} from '../../models/user'
//import provider
import { ProfileData } from '../../providers/profile-data';
import { NotesData } from '../../providers/notes-data';
import firebase from 'firebase'
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
//facebook user
userProfile: any = null;
uid: any = null;
fireUid:any=null;
name:string=null;
photo: any = null;
user:User=null;
//notes list
notes:any=null;
data:any;
constructor(public navCtrl: NavController, public navParams: NavParams,public profileData:ProfileData,private viewCtrl: ViewController,public notesData:NotesData,private loadingCtrl: LoadingController,private alertCtrl: AlertController) {
this.data={};
this.data.title="";
this.data.desc="";
}
ionViewDidLoad() {
this.fireUid=firebase.auth().currentUser.uid;
this.getDetailsFacebook();
this.getNotesList();
}
//facebook functions
getDetailsFacebook() {
var that=this;
Facebook.getLoginStatus().then((response)=> {
if (response.status == 'connected') {
Facebook.api('/' + response.authResponse.userID + '?fields=id,name,gender', []).then((response)=> {
//alert(JSON.stringify(response));
that.uid = response.id;
that.name=response.name;
that.photo = "http://graph.facebook.com/"+that.uid+"/picture?type=large";
that.user=new User(that.uid,that.fireUid,that.name, that.photo);
that.profileData.setProfileData(that.user); // to create class for that
//that.profileData.setProfile(that.uid,that.name,that.photo);
//console.log("id:"+this.uid+this.name+this.photo);
}, (error)=> {
alert(error);
})
}
else {
alert('Not Logged in');
}
})
}
getPhoto() {
var that=this;
Facebook.getLoginStatus().then((response)=> {
if (response.status == 'connected') {
Facebook.api('/me', []).then((response)=> {
alert(JSON.stringify(response));
that.photo = "http://graph.facebook.com/"+response.that.uid+"/picture";
}, (error)=> {
alert(error);
})
}
else {
alert('Not Logged in');
}
})
}
logOutFacebook(){
Facebook.logout().then((response)=>
{
this.navCtrl.push(LoginPage);
alert(JSON.stringify(response));
},(error)=>{
alert(error);
})
}
//notes functions
getNotesList(){
console.log("get event");
var that=this;
this.notesData.getNotesLIst().on('value', snapshot => {
let notesList= [];
snapshot.forEach(snap => {
console.log("id note"+snap.val().id);
notesList.push({
id: snap.val().id,
title: snap.val().title,
desc: snap.val().desc,
});
});
that.notes = notesList;
});
}
addNotes() {
//add preloader
console.log(this.data.title,this.data.desc);
this.notesData.createNote(this.data.title, this.data.desc);
}
delete(id:number){
}
update(id:number){}
}
これは私ですプロファイルデータプロバイダ
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
import firebase from 'firebase'
//import pages
import {User} from '../models/user'
/*
Generated class for the ProfileData provider.
See https://angular.io/docs/ts/latest/guide/dependency-injection.html
for more info on providers and Angular 2 DI.
*/
@Injectable()
export class ProfileData {
public userProfile: any;
public currentUser: any;
constructor() {
this.currentUser = firebase.auth().currentUser; // We'll use this to create a database reference to the userProfile node.
this.userProfile = firebase.database().ref('/users'); // We'll use this to create an auth reference to the current user.
}
setProfileData(userObj:User){
this.userProfile.child(userObj.fireUid).set({
firstname:userObj.full_name,
photoURl:userObj.photo
});
}