2017-08-17 19 views
0

我希望這是正確的論壇問這個的,我的選擇是堆棧溢出。但我所做的一切,儘可能準確發佈文章https://github.com/angular/angularfire2/blob/master/docs/Auth-with-Ionic3-Angular4.md中,我相信它在手機上正常工作,但我沒有看到我的名字。但是,在Web應用程序版本中,我確實看到了我的名字。被更新<h1>Hello {{ displayName }}</h1>只是冷落的功能,如果(this.platform.is('cordova')) {部分?AngularFire2/Ionic3 - Facebook驗證 - 原生科爾多瓦 - 閱讀對象/不更新HTML

signin.ts

import { Platform } from 'ionic-angular'; 
import { Component } from '@angular/core'; 
import { NavController, ToastController } from 'ionic-angular'; 

import { AngularFireAuth } from 'angularfire2/auth'; 
import * as firebase from 'firebase/app'; 

import { Facebook } from '@ionic-native/facebook'; 

@Component({ 
    selector: 'page-signin', 
    templateUrl: 'signin.html', 
}) 
export class SigninPage { 

    displayName; 

    constructor(public navCtrl: NavController, 
       private toastCtrl: ToastController, 
       private platform: Platform, 
       private fb: Facebook, 
       private afAuth: AngularFireAuth) { 
     afAuth.authState.subscribe((user: firebase.User) => { 
      if (!user) { 
       this.displayName = null; 
       return; 
      } 
      this.displayName = user.displayName;  
     }); 
    } 

    signInWithFacebook() { 
     if (this.platform.is('cordova')) { 
      return this.fb.login(['email', 'public_profile']).then(res => { 
       const facebookCredential = firebase.auth.FacebookAuthProvider.credential(res.authResponse.accessToken); 

       return firebase.auth().signInWithCredential(facebookCredential); 
      }) 
     } 
     else { 
      return this.afAuth.auth 
       .signInWithPopup(new firebase.auth.FacebookAuthProvider()) 
       .then(res => console.log(res)); 
     } 
    } 

    signOut() { 
    this.afAuth.auth.signOut(); 
    } 

} 

signin.html

<ion-header> 

    <ion-navbar> 
     <ion-title>Login</ion-title> 
    </ion-navbar> 

</ion-header> 


<ion-content padding> 

    <h1>Hello {{ displayName }}</h1> 
    <button ion-button outline (click)="signInWithFacebook()">Login</button> 
    <button ion-button outline (click)="signOut()">Logout</button> 
</ion-content> 

我看我怎麼可以訂閱afAuth.authState,但科爾多瓦,該Facebook包使用,所以我不知道如何訪問用戶的字段或什麼是重新轉向對象是。感謝您提供的任何幫助。

如果有幫助,當Android設備上跑,我看到了Facebook的盒子彈出了一個短暫的時期,也許10毫秒,然後消失。這就是爲什麼我認爲這是工作(認證),但我只是想知道如何訪問用戶領域,所以我可以打印我的名字,吸引用戶ID與關聯垃圾遍佈,可能進入一個數據庫應用程序。

回答

0

變化

signInWithFacebook() { 
     if (this.platform.is('cordova')) { 
      return this.fb.login(['email', 'public_profile']).then(res => { 
       const facebookCredential = firebase.auth.FacebookAuthProvider.credential(res.authResponse.accessToken); 

       return this.afAuth.auth.signInWithCredential(facebookCredential); // here is the change 
      }) 
     } 
     else { 
      return this.afAuth.auth 
       .signInWithPopup(new firebase.auth.FacebookAuthProvider()) 
       .then(res => console.log(res)); 
     } 
    } 
+0

嗯,切換到你在一個新的錯誤提供的結果,該行:'不能讀取屬性「叫」 undefined'的。試圖研究它以找出原因。 – Kenny