auth.logout 在我的应用程序中无法使用 firebase facebook 身份验证
Posted
技术标签:
【中文标题】auth.logout 在我的应用程序中无法使用 firebase facebook 身份验证【英文标题】:auth.logout is not working in my app using firebase facebook authentication 【发布时间】:2013-09-28 13:25:10 【问题描述】:我已经尝试了 Firebase Facebook 身份验证的基本步骤。因此,在我的应用中,用户可以使用 Firebase Facebook 身份验证成功登录。但是我在注销时遇到了问题。
我使用了注销按钮并在其上绑定点击事件,如下图:
$(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
之外使用它,那么它工作正常。
请帮我解决这个问题。
【问题讨论】:
您能澄清一下您在使用 logout() 时遇到的问题吗?你的问题不清楚。哪些行为与您的预期不同?您是否在控制台中看到错误? 不,它在控制台没有给出任何错误。我的问题是当我点击注销按钮时,我的 fb 会话应该过期吗?所以这里不会发生这种情况 当您调用logout()
时,您的 Firebase 简单登录会话已过期,但您仍登录 Facebook,并且该应用程序仍在您的 Facebook 帐户中进行身份验证。再次调用 login()
可能会立即出现,并且不会要求用户再次批准应用程序,这是 Facebook Connect 的预期行为。
@RobDiMarco 哦,是这样的,嗯.. 明白了。谢谢
【参考方案1】:
与关于auth.logout()
的问题分开,你不应该在这个回调中调用auth.login('facebook');
。相反,它应该在用户点击事件之后调用,因为您的浏览器会阻止 Facebook 弹出窗口启动。
来自https://www.firebase.com/docs/security/simple-login-overview.html:
第三方身份验证方法使用浏览器弹出窗口 提示用户登录、批准申请并返回 用户的数据到请求的应用程序。大多数现代浏览器都会 阻止打开此弹出窗口,除非它被 直接用户操作。
因此,我们建议您只调用“login()” 用户点击时的第三方认证方式方法。
【讨论】:
好的,谢谢,知道了。但是 auth.logout() 呢?为什么它在我的情况下不起作用?任何想法以上是关于auth.logout 在我的应用程序中无法使用 firebase facebook 身份验证的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.2:Auth::logout() 不起作用