2016-10-18 15 views
-1

私はGirebaseの新機能です。特定のユーザーにデータを挿入し、firebaseで自分のデータにアクセスする方法は?

Facebookでログインすると、自分のデータを取得してIDを取得し、Firebaseに入れます。次に、特定のIDに追加したいと、彼は付け加えました。 私はそのすべてを行うことに成功しましたが、ユーザーからログアウトしたときに再びログインし、すべてのデータが削除されます(彼のすべてのメモ)。

私はユーザーと一緒にログインするたびに、ID、名前、写真を見るためにFirebaseに再度電話するので、前に詳細を削除するだけなので、なぜ起こったのか理解しています。いわゆる毎回ホームページ:これは私のFacebookのログインコードのMy Firebase構造 enter image description here

あるので

オーケー

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 
    }); 
    } 

答えて

0

「ユーザー」の外に「メモ」を作成する必要があります。 userIDを "notes"の中に入れて、この情報を保存することができます。

「ユーザー」とは、ユーザー名、ID、フォトチューリを保存するだけです。

関連する問題