0

我試圖使用Angular2中的Firebase提供商訪問Facebook的uid,但我無法從Facebook提供商處獲得用戶uid。使用Angular2獲取提供商UID在Firebase中使用Angular2

當我使用authState.uid它顯示我的firebase uid而不是Facebook的uid,文檔已過時,authState.facebook.uid已棄用,所以我不知道正確的方式來獲取Facebook用戶ID 。

通過互聯網,我看到它是一種使用類似authState.providerData.uid的方式獲取Facebook用戶標識的新方法,但在控制檯中我得到了未定義。

這裏是我的代碼:

export class AppComponent { 
    user: Observable<firebase.User>; 
    displayName; 
    photoURL; 


    constructor(public afAuth: AngularFireAuth, private db: AngularFireDatabase, private http: Http) { 
    this.user = afAuth.authState; 
    } 

    ngOnInit() { 
    this.afAuth.authState.subscribe(authState => { 
     if (!authState) { 
     console.log('NOT LOGGED IN'); 
     this.displayName = null; 
     this.photoURL = null; 
     return; 
     } 
     let userRef = this.db.object('/users/' + authState.uid) 
     userRef.subscribe(user => { 
     let url = `https://graph.facebook.com/v2.8/${authState.uid}?fields=first_name,last_name&access_token=${user.accessToken}`; 
     this.http.get(url).subscribe(response => { 
      let user = response.json(); 
      userRef.update({ 
      firstName: user.first_name, 
      lastName: user.last_name 
      }); 
     }); 
     }); 


     this.displayName = authState.displayName; 
     this.photoURL = authState.photoURL; 
     console.log(authState.uid); 
    }); 
    } 

感謝您的時間和幫助:)

回答

0

好了,所以我解決了這個辦法,我不知道這是否是做的最好的方式,但它爲我...

要得到Facebook的UID的替代authState.facebook.uid I'm現在用authState.providerData [0] .uid

I'(我認爲這是不建議使用)已經用authSt嘗試過了ate.providerData.uid但它沒有工作,所以我把[0]進入數組並獲得uid。