【问题标题】:How to log out social sites via gem OmniAuth Facebook/Twitter如何通过 gem OmniAuth Facebook/Twitter 注销社交网站
【发布时间】:2014-04-06 17:56:50
【问题描述】:

我正在使用 omniauth-facebookomniauth-twitter gems 来启用通过 Facebook、Twitter 登录。

一切正常,我可以使用OAuth 对用户进行身份验证。这里的大问题是,当用户从我的应用程序中注销时,它不会注销 来自他们进行身份验证的社交网站,这很危险。

我想添加一个功能,该功能将在两个地方(即我的应用程序和相应的社交网站)破坏会话。 我怎么做? 是否可以使用我目前正在使用的omniauth gems?或者是否有其他可用的 gem/API 来实现这一点?

【问题讨论】:

  • Devise 确实提供了一个窗口,让用户在一段时间不活动后退出。
  • @Ashitaka 感谢您的链接。当我希望用户喜欢在提供程序站点中强制登录时,这很有效。我一直在寻找注销上下文中的内容,例如当我从应用程序注销时,也应该有某种方法可以注销提供程序应用程序。
  • @Ashitaka 你的意思是在退出我的应用程序后我应该再次将用户重定向到提供程序页面吗?但是用户不知道他/她应该在那里做什么,因为提供商会提供登录屏幕,并且提供商不会回调我的应用程序,直到用户不在提供商网站上执行任何活动。

标签: ruby-on-rails facebook twitter ruby-on-rails-4 omniauth


【解决方案1】:

在我看来,问题在于我们不知道用户的意图。如果用户从您的应用程序中注销并且他们没有使用 Facebook 打开其他选项卡,然后他们离开计算机认为他们都完成了但让浏览器保持打开状态,那么是的,那会很糟糕。另一方面,如果他们在 Facebook 上有另一个选项卡,如果他们退出您的应用程序然后切换到另一个选项卡,希望继续使用 Facebook,他们会很生气。您可能会争辩说,烦人总比让他们在不知情的情况下登录 Facebook 要好——我通常同意!

如果您正在处理服务器端的登录流程,我不知道有什么好的/官方的方法可以做到这一点。一些人建议建立一个普通的 Facebook 网址 - 请参阅 https://stackoverflow.com/a/8765863 - 我想如果该方法仍然有效(这是一个旧答案),您可以重定向到该网址并使其重定向回来,但正如用户暗示的那样,它感觉很脆弱。

如果您使用的是 javascript api,则有 FB.logout 函数:

https://developers.facebook.com/docs/reference/javascript/FB.logout/

和/或使用auto_logout_link参数自动显示注销按钮而不是登录按钮:

https://developers.facebook.com/docs/plugins/login-button/

涵盖两种用户意图场景的一个选项是让您的正常注销按钮显然会终止您的应用程序的会话,并且当他们单击它时,重定向到具有“从 Facebook 注销?”的页面。按钮 - 可能使用带有 auto_logout_link 参数的 javascript 登录按钮。然后,如果他们用完计算机,他们可以从 Facebook 注销,或者如果他们在另一个选项卡中打开了 Facebook 并想继续使用它,则选择不点击它。

我相信您知道,omniauth-facebook 支持服务器端和客户端登录流程。

我不确定omniauth-twitter 是否可以实现等效功能 - 我没有这方面的经验。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多