0

我的肉與離子的問題。我會解釋這一點。離子AngularFire Firebase Facebook登錄

我使用Ionic 2和AngularFire 2來使用Firebase。所以我可以訪問我的數據庫並使用Facebook登錄。我使用一個按鈕來調用這個功能:

this.af.auth.login({ 
    provider: AuthProviders.Facebook, 
    method: AuthMethods.Popup 
}).then(function(response){ 
    console.log('facebook login ', response); 
}); 

一切都很好的離子實驗室。但是,當我在我的設備中測試我的應用程序時,該按鈕不起作用,Popup和重定向都不起作用。那麼你能幫助我嗎?

回答

1

您需要修正一些東西,我用科爾多瓦的Facebook登錄:

你不同意你的日誌錯誤,但我認爲你需要做的:

在你的Facebook應用程序: 添加一個新的平臺,Android或IOS(你沒有說你在用什麼)。

添加科爾多瓦插件:

ionic plugin add cordova-plugin-facebook4 --save --variable APP_ID="999999999" --variable APP_NAME="myApplication" 

使用Facebook應用程序ID和名稱。

在您的應用程序安裝離子母語:

npm install ionic-native --save 

添加Facebook的進口在你的代碼:

import { Facebook } from 'ionic-native'; 

,改變你的方法用科爾多瓦登錄:

loginWithFacebook() { 
    return Observable.create(observer => { 
     if (this.platform.is('cordova')) { 
     Facebook.login(['public_profile', 'email']).then(facebookData => { 
      let provider = firebase.auth.FacebookAuthProvider.credential(facebookData.authResponse.accessToken); 
      console.log('facebook accessToken: '+facebookData.authResponse.accessToken); 
      firebase.auth().signInWithCredential(provider).then(firebaseData => { 
      console.log('facebook login ', firebaseData); 
      observer.next(); 
      }).catch(function(error) { 
      // Handle Errors here. 
      console.log("error"); 
      console.log(error); 
      // ... 
      }); 
     }, error => { 
      observer.error(error); 
     }); 
     } else { 

     this.af.auth.login({ 
      provider: AuthProviders.Facebook, 
      method: AuthMethods.Popup 
     }).then((response) => { 
      console.log('facebook login ', response); 
      observer.next(); 
     }).catch((error) => { 
      console.info("login", error); 
      observer.error(error); 
     }); 
     } 
    }); 
    } 

注意:如果您的應用程序在開發中,則只有開發人員可以登錄。

+0

它的作品!非常感謝里卡多! – Aimen

0

上面可以更簡單的使用就像剛做這個給here的axample的AuthProvider中的代碼:

signInWithFacebook(): firebase.Promise<any> { 
    if (this.platform.is('cordova')) { 
    return Facebook.login(['public_profile', 'email']).then(facebookData => { 
     let provider = firebase.auth.FacebookAuthProvider.credential(facebookData.authResponse.accessToken); 
     console.log('facebook accessToken: ' + facebookData.authResponse.accessToken); 
     return firebase.auth().signInWithCredential(provider); 
    }); 
    } else { 
    return this.auth$.login({ 
     provider: AuthProviders.Facebook, 
     method: AuthMethods.Popup 
    }); 
    } 
}