我已尝试过Firebase Facebook身份验证的基本步骤。因此,在我的应用中,用户可以使用Firebase Facebook身份验证成功登录。但是我在退出时遇到了问题。
我使用了注销按钮并在其上绑定了click事件,如下所示:
$(function(){
$('#lgout').click(function(){
auth.logout();
});
});
登录时我使用以下代码:
var chatRef = new Firebase('https://my-firebase-url');
var auth = new FirebaseSimpleLogin(chatRef, function(error, user) {
if (error) {
// an error occurred while attempting login
alert("please login first");
} else if (user) {
// user authenticated with Firebase
//alert('User ID: ' + user.id + ', Provider: ' + user.provider);
$.ajax({
type: "GET",
url: "https://graph.facebook.com/"+user.id,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data) {
$('#user').text("Welcome "+data.name);
}
});
} else {
// user is logged out
//auth.login('facebook');
}
});
auth.login('facebook');
在登录时,我遇到了一个问题,因为您在else
部分中看到我使用的auth.login('facebook');
无法正常显示错误
auth is not defined
。但是,如果我在else
之外使用,那么它工作正常。
请帮我弄清楚这个问题。
答案 0 :(得分:1)
与auth.logout()
相关的问题不同,您不应该在此回调中调用auth.login('facebook');
。相反,它应该在用户点击事件后调用,因为您的浏览器将阻止Facebook弹出窗口启动。
来自https://www.firebase.com/docs/security/simple-login-overview.html:
第三方身份验证方法使用浏览器弹出窗口 提示用户登录,批准该应用程序,然后返回 用户的数据到请求的应用程序。大多数现代浏览器会 阻止打开此弹出窗口,除非它被调用 直接用户行动。
出于这个原因,我们建议您只调用“login()” 用户点击后第三方认证方法的方法。