Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在IOS上使用带Chrome的authWithOAuthRedirect无法获取authData_Javascript_Ios_Google Chrome_Firebase - Fatal编程技术网

Javascript 在IOS上使用带Chrome的authWithOAuthRedirect无法获取authData

Javascript 在IOS上使用带Chrome的authWithOAuthRedirect无法获取authData,javascript,ios,google-chrome,firebase,Javascript,Ios,Google Chrome,Firebase,我正在将我的项目与FacebookAuth登录集成,我想在IOS上支持Chrome。我注意到在本例中,我必须同时处理authWithOAuthPopup和authWithRedirect()。但是Chrome IOS目前不支持弹出式身份验证 我简化了我的代码,并向大家展示了它在IOS上的Chrome中是如何不起作用的 var rootRef = new Firebase('https://docs-sandbox.firebaseio.com/web/uauth'); rootR

我正在将我的项目与FacebookAuth登录集成,我想在IOS上支持Chrome。我注意到在本例中,我必须同时处理authWithOAuthPopup和authWithRedirect()。但是Chrome IOS目前不支持弹出式身份验证

我简化了我的代码,并向大家展示了它在IOS上的Chrome中是如何不起作用的

    var rootRef = new Firebase('https://docs-sandbox.firebaseio.com/web/uauth');
    rootRef.onAuth( function(authData){
        alert('getAuth');
        alert(authData);
        console.log(authData);
    });
    $('#login').on('click', function(e){
        rootRef.authWithOAuthPopup("facebook", function(err, authData){
            if(err && err.code === 'TRANSPORT_UNAVAILABLE'){
                rootRef.authWithOAuthRedirect("facebook", function(err, authData){
                    if(authData){
                        alert('redirect');
                        alert(authData);

                    }
                })   
            }
        })    
     });
链接此处了解更多详细信息

它适用于Safari IOS。如果登录成功,它将提醒[object],但在IOS上的Chrome中显示null


有什么想法吗?

我想我知道问题出在哪里了

首先,据说getAuth在文档中是同步的,但在authWithOAuthRedirect上是不可靠的同步。所以当页面重定向到原始页面时。我无法获取authData,因此无法确定用户是否已登录。(但实际上用户已登录)。 其次,由于无法调用“authWithOAuthRedirect”中的回调函数,因此回调函数无论如何也无法获取authData。如果发生错误就可以调用它,对吗?我建议注意文档中的这种行为

无论如何:我认为文档中的片段必须更正:

authWithFunction中的回调用于处理错误,不建议处理authData,onAuth是获取authData的更好方法。我更新了我的要点[

var ref=新Firebase(“https://.firebaseio.com");
rootRef.onAuth(函数(authData){
//这是一种更好的获取authData的方法,而不是从auth回调函数获取
console.log(authData);
});
//更喜欢弹出窗口,因此我们不会离开页面
//auth回调用于处理是否发生错误
参考authWithOAuthPopup(“谷歌”,函数(err){
如果(错误){
如果(错误代码==“传输不可用”){
//返回到浏览器重定向,然后选择会话
//当我们返回到原始页面时自动执行
ref.authWithOAuthRedirect(“google”,函数(err){…});
}
}
});

顺便说一句,我发现了一个类似的问题,解决方法不太好,但我认为我们遇到了相同的问题。

我想我找到了问题所在

首先,据说getAuth在文档中是同步的,但它在authWithOAuthRedirect上不是可靠的同步。所以当页面重定向到原始页面时,我无法获取authData,因此我无法确定用户是否已登录(但实际上用户已登录)。 其次,由于无法调用“authWithOAuthRedirect”中的回调函数,因此回调函数无论如何都无法获取authData。如果发生错误,可以调用它,对吗?我建议注意文档中的这种行为

无论如何:我认为文档中的片段必须更正:

authWithFunction中的回调用于处理错误,不建议处理authData,onAuth是获取authData的更好方法[

var ref=新Firebase(“https://.firebaseio.com");
rootRef.onAuth(函数(authData){
//这是一种更好的获取authData的方法,而不是从auth回调函数获取
console.log(authData);
});
//更喜欢弹出窗口,因此我们不会离开页面
//auth回调用于处理是否发生错误
参考authWithOAuthPopup(“谷歌”,函数(err){
如果(错误){
如果(错误代码==“传输不可用”){
//返回到浏览器重定向,然后选择会话
//当我们返回到原始页面时自动执行
ref.authWithOAuthRedirect(“google”,函数(err){…});
}
}
});

顺便说一句,我发现了一个类似的问题,解决方法不太好,但我认为我们遇到了相同的问题。

我想我找到了问题所在

首先,据说getAuth在文档中是同步的,但它在authWithOAuthRedirect上不是可靠的同步。所以当页面重定向到原始页面时,我无法获取authData,因此我无法确定用户是否已登录(但实际上用户已登录)。 其次,由于无法调用“authWithOAuthRedirect”中的回调函数,因此回调函数无论如何都无法获取authData。如果发生错误,可以调用它,对吗?我建议注意文档中的这种行为

无论如何:我认为文档中的片段必须更正:

authWithFunction中的回调用于处理错误,不建议处理authData,onAuth是获取authData的更好方法[

var ref=新Firebase(“https://.firebaseio.com");
rootRef.onAuth(函数(authData){
//这是一种更好的获取authData的方法,而不是从auth回调函数获取
console.log(authData);
});
//更喜欢弹出窗口,因此我们不会离开页面
//auth回调用于处理是否发生错误
参考authWithOAuthPopup(“谷歌”,函数(err){
如果(错误){
如果(错误代码==“传输不可用”){
//返回到浏览器重定向,然后选择会话
//当我们返回到原始页面时自动执行
ref.authWithOAuthRedirect(“google”,函数(err){…});
}
}
});

顺便说一句,我发现了一个类似的问题,解决方法不太好,但我认为我们遇到了相同的问题。

我想我找到了问题所在

首先,据说getAuth在文档中是同步的,但它在authWithOAuthRedirect上不是可靠的同步。所以当页面重定向到原始页面时,我无法获取authData,因此我无法确定用户是否已登录(但实际上用户已登录)。 其次,由于无法调用“authWithOAuthRedirect”中的回调函数,因此回调函数无论如何都无法获取authData。如果发生错误,可以调用它,对吗?我建议注意文档中的这种行为

无论如何:我认为文档中的片段必须更正:

authWithFunction中的回调用于处理错误,不建议处理authData,onAuth是获取authData的更好方法[

var ref=新Firebase
var ref = new Firebase("https://<your-firebase>.firebaseio.com");


rootRef.onAuth( function(authData){
  //It is a better way to get authData instead of get from auth callback function
  console.log(authData);
});
// prefer pop-ups, so we don't navigate away from the page
// auth callback is to handle if occur error
ref.authWithOAuthPopup("google", function(err) {
  if (err) {
    if (err.code === "TRANSPORT_UNAVAILABLE") {
      // fall-back to browser redirects, and pick up the session
      // automatically when we come back to the origin page
      ref.authWithOAuthRedirect("google", function(err) { ... });
    }
  }
});