gpt4 book ai didi

javascript - 网站的 Facebook 登录 : Best practice to handle user Facebook logout?

转载 作者:搜寻专家 更新时间:2023-11-01 04:33:29 24 4
gpt4 key购买 nike

我正在编写一个网络应用程序,用户需要使用 Facebook 登录(非 Facebook 登录在应用程序的上下文中没有意义)。理想情况下,在他们初次访问之后,当用户访问 /index 时,我的 webapp 会看到它之前存放的 cookie,并自动无缝地让用户登录并转到应用程序 (/app).

当用户退出 Facebook 并返回到我的应用程序时,我的问题就出现了。由于他们在我域上的 cookie 仍然存在,并且他们的 oauth_token 仍然有效(现在有效期为 60 天),我仍然可以让用户自动登录,应用程序将按预期运行.

对我来说,即使用户未登录 Facebook,该应用仍使用他们的 Facebook 帐户登录似乎是不对的。我在 Stackoverflow 上玩过;它也允许这种行为。我的担心是错误的,还是有推荐的方法来查看用户首次从我的服务器请求 /index 时是否已登录 Facebook。

最佳答案

在我看来,当用户已经退出 Facebook 时,我认为您的应用不应保持登录状态。

可能不希望出现这种情况的一种情况是:如果我在公共(public)计算机上使用您的应用程序怎么办。在我退出 Facebook 后,您的应用程序仍然“记住”了我。现在任何使用此计算机的人都将在您的应用程序中采用我的 Facebook 身份。

我认为这里的问题是您设置了自己的 cookie 来记住用户的 Facebook 登录状态。显然,当用户退出 Facebook 本身时,您的 cookie 不会被清除。所以此时您的 cookie 与 Facebook 状态不同步。

我建议您不要将自己的 cookie 用于记住用户的 Facebook 登录状态。为此始终依赖 Facebook 本身。

一般策略是,每当用户访问您的应用程序时,您应该使用 Facebook 提供的机制检查 Facebook 登录状态。这样,您的应用程序将在用户登录状态方面与 Facebook 同步。

我个人使用这段代码来调用 Facebook Javascript API 以达到用户登录的目的:

/* 
* Init code for Facebook connect
*/
window.fbAsyncInit = function() {
FB.init({
appId : FACEBOOK_APP_ID, // App ID
channelUrl : CHANNEL_URL, // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
oauth : true
});

// check facebook login status
FB.getLoginStatus(function(response) {
console.log("FB login status: " + response.status);
if (response.status === 'connected') {
showWelcome(); //display welcome message
} else if (response.status === 'not_authorized') {
// the user is logged in to Facebook, but not connected to the app
showFbLogin(); //display Facebook Login button
} else {
// the user isn't even logged in to Facebook.
showFbLogin(); //display Facebook Login button
}
});

// subscribe to facebook events
FB.Event.subscribe('auth.authResponseChange', function(response) {
fbAuthResponseChanged(response);
});
};

关于javascript - 网站的 Facebook 登录 : Best practice to handle user Facebook logout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9162156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com