我想用angularFire(对于angularJS)通过firebase实现facebook登录 它对一些用户来说很好 - 但对于其他用户,会发生以下情况:
事情是:我无法复制它,因为在我的设备上它工作正常。
有人知道可能是什么问题吗?
它适用于Chrome(61,桌面和62手机)和Safari(v。未知)。但不适用于其他Safari客户端,也不适用于移动版Safari。
我从它为它们记录“没有firebase用户”这一事实中收集到这一点,即最终在第一个的else分支中
这是我的代码,它位于一个可供所有控制器使用的angularJS服务中:
// any time auth state changes, add the user data to scope
self.auth.$onAuthStateChanged(function (firebaseUser) {
self.firebaseUser = firebaseUser;
// get the token from the firebase User Object
// Note that getToken() is deprecated and for me it did not work as desired
// use getIdToken() instead
if (self.firebaseUser) {
firebaseUser.getIdToken().then(function (idToken) {
// firebase thinks facebook e-mails are unverified by default, for me they are fine
if (!firebaseUser.emailVerified && !(firebaseUser.providerData[0].providerId === 'facebook.com')) {
$location.path('/pleaseVerify');
} else {
self.idToken = idToken;
self.gapiToken = {
access_token: self.idToken.toString()
};
}
});
$location.path('/landing');
} else {
$log.log("no firebase user");
//$location.path('/landing');
}
// TODO: redirect User to where he was last?
});
这是将所有用户带到Facebook并返回的代码(一些使用firebase用户,一些没有)
/**
* SignIn using social Auth provider
* @param googleorfacebook a string value whether we want to sign in with google or facebook
* can be either "google" or "facebook"
*/
self.socialAuth = function (googleorfacebook) {
self.auth.$signInWithRedirect(googleorfacebook).then(function () {
// Never called because of page redirect
// Instead, use $onAuthStateChanged() to detect successful authentication
}).catch(function (error) {
console.error("Authentication failed:", error);
});
};