【问题标题】:How to redirect to new page on successful Facebook authentication如何在成功的 Facebook 身份验证后重定向到新页面
【发布时间】:2017-08-13 21:25:44
【问题描述】:

我有以下代码用于使用 firebase 进行 Facebook 身份验证。在成功的身份验证中,我需要重定向到新页面。我试图检查内部是否令牌不为空,然后是 window.redirect 函数,但它不起作用。任何人都可以帮助我。谢谢。

facebookLogin(){
    // Sign in using a redirect.
    firebase.auth().getRedirectResult().then(function(result) {
        console.log(result);
      if (result.credential) {
        // This gives you a Google Access Token.
        var token = result.credential.accessToken;
      }
      var user = result.user;
    })
    // Start a sign in process for an unauthenticated user.
    var provider = new firebase.auth.FacebookAuthProvider();
    firebase.auth().signInWithRedirect(provider);
}

【问题讨论】:

    标签: firebase ionic2 firebase-authentication facebook-authentication


    【解决方案1】:

    可能在您的身份验证回调中出现navController.setRoot(NewPage)navController.push(NewPage)

    更多详情请见the NavController documentation

    【讨论】:

      【解决方案2】:

      您应该使用 箭头函数 (()=> {...}) 而不是标准函数 (function(){...}),因此 this 关键字仍然引用组件代码而不是函数本身。这样,您仍然可以在该函数内部使用组件中定义的属性和方法。

      facebookLogin(){
          // Sign in using a redirect.
          firebase.auth().getRedirectResult().then((result) => { // <--- Here!
            console.log(result);
            if (result.credential) {
              // This gives you a Google Access Token.
              var token = result.credential.accessToken;
            }
            var user = result.user;
      
            // Now you can use the methods and properties from your component here!
            this.navCtrl.setRoot(NextPage);
      
          });
          // Start a sign in process for an unauthenticated user.
          var provider = new firebase.auth.FacebookAuthProvider();
          firebase.auth().signInWithRedirect(provider);
      }
      

      【讨论】:

        【解决方案3】:

        成功验证后重定向到新页面 -

        1. 创建一个在页面加载时加载的函数 -

          function initApp() {
              firebase.auth().getRedirectResult().then(function (result) {
                  if (result.credential) {
                      window.location='newpage.html';//Replace with your newpage URL
                  }
              }
          
          }
          window.onload = function () {
              initApp();        
          };
          

          注意 - 带有 window.onload 函数的脚本应该位于调用下面第 2 点中给出的 facebook 登录方法的页面上。

        2.(推荐)将提供程序调用脚本单独保存在另一个函数中 -

        function signInWithFacebook() {
            var provider = new firebase.auth.FacebookAuthProvider();
            firebase.auth().signInWithRedirect(provider);
        }
        

        【讨论】:

          猜你喜欢
          • 2012-08-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-11
          • 2018-03-28
          • 2017-06-09
          • 1970-01-01
          相关资源
          最近更新 更多