Ionic AngularFire Firebase Facebook 登录
Ionic AngularFire Firebase Facebook Login
我遇到了 Ionic 的问题。我会解释的。
我使用 Ionic 2 和 AngularFire 2 来使用 Firebase。这样我就可以访问我的数据库并使用 Facebook 登录。我用一个按钮来调用这个函数:
this.af.auth.login({
provider: AuthProviders.Facebook,
method: AuthMethods.Popup
}).then(function(response){
console.log('facebook login ', response);
});
离子实验室的一切都很好。但是,当我在我的设备中测试我的应用程序时,按钮什么都不做,弹出窗口和重定向都不起作用。那你能帮我吗?
你需要解决一些问题,我使用 Cordova 登录 facebook:
您没有分享您的日志错误,但我认为您需要这样做:
在您的 Facebook 应用中:
添加一个新平台,Android 或 IOS(您没有说明您使用的是什么)。
添加一个 cordova 插件:
ionic plugin add cordova-plugin-facebook4 --save --variable APP_ID="999999999" --variable APP_NAME="myApplication"
使用您的 Facebook 应用 ID 和名称。
在您的应用中安装 ionic-native:
npm install ionic-native --save
在您的代码中添加 Facebook 导入:
import { Facebook } from 'ionic-native';
并更改使用 Cordova 登录的方法:
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);
});
}
});
}
注意:如果您的应用正在开发中,则只有开发人员可以登录。
上面的代码可以更简单地在 AuthProvider 中使用,就像给定的 axample here 只需这样做:
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
});
}
}
我遇到了 Ionic 的问题。我会解释的。
我使用 Ionic 2 和 AngularFire 2 来使用 Firebase。这样我就可以访问我的数据库并使用 Facebook 登录。我用一个按钮来调用这个函数:
this.af.auth.login({
provider: AuthProviders.Facebook,
method: AuthMethods.Popup
}).then(function(response){
console.log('facebook login ', response);
});
离子实验室的一切都很好。但是,当我在我的设备中测试我的应用程序时,按钮什么都不做,弹出窗口和重定向都不起作用。那你能帮我吗?
你需要解决一些问题,我使用 Cordova 登录 facebook:
您没有分享您的日志错误,但我认为您需要这样做:
在您的 Facebook 应用中: 添加一个新平台,Android 或 IOS(您没有说明您使用的是什么)。
添加一个 cordova 插件:
ionic plugin add cordova-plugin-facebook4 --save --variable APP_ID="999999999" --variable APP_NAME="myApplication"
使用您的 Facebook 应用 ID 和名称。
在您的应用中安装 ionic-native:
npm install ionic-native --save
在您的代码中添加 Facebook 导入:
import { Facebook } from 'ionic-native';
并更改使用 Cordova 登录的方法:
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);
});
}
});
}
注意:如果您的应用正在开发中,则只有开发人员可以登录。
上面的代码可以更简单地在 AuthProvider 中使用,就像给定的 axample here 只需这样做:
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
});
}
}