firebase facebook登录/注册不适用于某些用户

时间:2017-11-04 16:46:07

标签: javascript angularjs facebook firebase-authentication angularfire

我想用angularFire(对于angularJS)通过firebase实现facebook登录 它对一些用户来说很好 - 但对于其他用户,会发生以下情况:

  1. 重定向到Facebook并确认他们想要登录或签名 在我的应用程序
  2. 他们被重定向回我的页面
  3. 触发了我的angularfire onAuthState - 但没有firebase用户
  4. 事情是:我无法复制它,因为在我的设备上它工作正常。

    有人知道可能是什么问题吗?

    它适用于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);
        });
    };
    

0 个答案:

没有答案