Facebook登录/注销最佳实践

3

我第一次实现 Facebook 登录(Web 版)时,有些关于用户会话和最佳的登出处理方式的问题需要解决。目前,我正在使用 JS SDK(仅在启用 JavaScript 时用于登录流程)和 PHP SDK 的组合。

问题1:我应该将 Facebook 访问令牌保存在 PHP 会话中还是使用 SDK 中内置的“cookies: true”功能?

问题2:如果通过 Facebook 注册的用户在几天后返回网站,他们应该自动登录还是必须点击“通过 Facebook 登录”按钮然后才能登录?

问题3:如果 FB 登录用户从我的网站退出登录,我应该让他们同时退出 Facebook 还是只退出我的网站?

问题4:如果 FB 登录用户在我的网站上注销 Facebook 登录(不同的标签页),我应该自动让他们退出我的网站吗?


1
关于第三个问题:根据平台政策,您必须提供一个注销按钮/链接,以同时将用户从facebook.com注销。至于其他内容,请从这里开始:https://developers.facebook.com/docs/facebook-login/checklist/ - CBroe
@CBroe 关于#3:真的吗?我在他们的政策中找不到任何相关内容。如果您知道这个存在,能否分享一个链接? - Jonas Äppelgran
@Jonas:好吧,那个评论是相当久以前的了。现在该文档重定向到这里,https://developers.facebook.com/docs/facebook-login/best-practices#loggingout,并且措辞有些变化:“一旦用户登录,您还应该为他们提供注销、断开帐户或完全删除帐户的方法。” - CBroe
@CBroe 好的。我现在找到了一些澄清,不是在政策中,而是在参考文档中,请看下面我的回答。 - Jonas Äppelgran
2个回答

0

1) 你可以将访问令牌保存在数据库中(但要注意到期日期),或者将其保存在会话中。使用Cookie是管理此过程最简单的方法,并且可以解决(2)。

2) 根据您处理会话和使用的SDK的方式,用户将自动登录(例如,使用JavaScript方法FB.getLoginStatus()检测应用程序是否已经被授权)。无论如何,在您的应用程序中都应该有一个“使用Facebook登录”的按钮,供新用户使用。

3) 如果您在SDK中使用注销方法(例如,在JavaScript SDK中使用FB.logout()),则用户将同时退出您的站点和Facebook。这实际上取决于您想如何处理此问题。您可以通过删除会话/cookie来注销他们的站点。

4) 每当在您的站点上执行操作时,您应始终检查用户是否已登录。如果用户在您的站点上退出Facebook,则最终您的站点应该通过使用FB.getLoginStatus()来检测并要求他们重新登录。


0

3) Facebook将决定用户是应该从Facebook登出还是仅从您的网站/应用程序登出,至少使用JS SDK时是如此。从他们的文档中,查看以下链接获取一些案例示例:

“方法FB.logout()会将用户从您的网站登出,在某些情况下也会将用户从 Facebook 登出。”- Facebook 文档


我猜他们基于用户在登录应用程序之前是否有其他Facebook活动来做出这个决定。如果有人在浏览器/设备上已经在浏览facebook.com,然后登录到应用程序中,似乎合理只将他们从该特定应用程序中注销;而如果他们在登录应用程序时登录到Facebook,则可以合理地猜测他们可能不会继续使用Facebook,因此最好也将他们从Facebook注销。 - CBroe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接