ionic / firebase / cordova facebook Auth

时间:2017-01-20 10:49:05

标签: ios cordova firebase ionic-framework firebase-authentication

我对angularfire / ionic / cordova应用程序有一点问题,特别是facebook auth,我已经推送了我的服务代码 。 (我在我的Auth控制器中调用我的服务函数Auth.login但是这部分代码没有运行) 这个代码运行完美 - 离子 - 保存。 但无法在模拟器或我的设备(iphone)上访问faceboook登录。 当我点击“用FB登录”时我什么都没有。 我不明白我怎么能解决这个问题。 你能救我吗?

app.factory("Auth", function($ionicModal, Findcity, $firebaseAuth,$localStorage, FirebaseUser, geoLocation ){

var provider = new firebase.auth.FacebookAuthProvider();
provider.addScope('user_birthday');
provider.addScope('user_location');
provider.addScope('email');
provider.addScope('user_photos');
provider.addScope('public_profile');
provider.addScope('user_about_me');


var Auth = {

login: function() {
  return $firebaseAuth().$signInWithPopup(provider)
    .then(function(result) {
      $localStorage.fbAccessToken = result.credential.accessToken;
      var facebookUser = firebaseAuth$().$getAuth().providerData[0];
      return FirebaseUser.get(facebookUser.uid)
      .then(function(user){
        console.log(facebookUser);
        if(user.$value == null) {
          console.log(user);
        FirebaseUser.save(facebookUser);
        }else {
         var lat = geoLocation.getGeolocation().lat;
         var lng = geoLocation.getGeolocation().lng;
         Findcity.city(lat, lng).then(function(city){
          var city_user = city;
          return firebase.database().ref('/users/' + facebookUser.uid).child('location').update({lat: lat, long: lng, city: city_user})
        })
      }
    })
  });
},
  return Auth;
});

1 个答案:

答案 0 :(得分:0)

Cordova环境目前不支持Firebase 3.x signInWithPopup / Redirect。在支持此功能(正在进行中)之前,您可以使用其他插件获取Facebook,Google的OAuth响应,然后使用signInWithCredential。您可以使用类似https://www.npmjs.com/package/cordova-plugin-facebook的内容来获取Facebook访问令牌,然后通过auth.signInWithCredential(firebase.auth.FacebookAuthProvider.credential(fbAccessToken))登录;