一百万感谢您为如此疲惫的功能提供干净且全面的解决方案。自从我发现几乎所有新的facebooker用户都相信“facebook连接完全退出”这一事实以来,我在过去两周内一直处于空白状态。或者可能只是缺少文档或一些代码摘录,直到日期我无法在 facebooker 封面文档中找到。
无论如何,远离这一切,转向让我实现它的解决方案......遵循上面的@James B方法。
显然,我假设你们都已阅读 facebooker 安装、配置和使用说明http://github.com/mmangino/facebooker。
我还使用了一个插件“authlogic_facebook_connect”,您可以在 github.com 的 kalasjocke/authlogic_facebook_connect 页面上找到它。
现在我假设您已经通过使用 fb_login_button 或 authlogic_facebook_login_button 将您的应用程序配置为使用 facebook connect。单击它,您会看到一个弹出窗口,让您自己登录您的 Facebook 帐户和应用程序的本地帐户。登录后,您将获得一个 facebook_session 来处理在数据库中保存新用户(仅当您愿意时)。
默认情况下,您不会在 facebook_session 中获得用户的生日和电子邮件地址作为来自 facebook 的响应。要获得它们,您需要在 rhtml 页面的正文标记中的初始化 javascript 中使用类似的内容...
<%= fb_connect_javascript_tag %> <%=
init_fb_connect "XFBML",{
:app_settings=>" {
permsToRequestOnConnect :
'email,user_birthday' }"} %>
<%= authlogic_facebook_login_button %>
现在,我终于可以退出 Facebook 和我的网站了。
-
在您的应用程序的标题内或任何显示登录、注销、登录用户名等的地方...
:删除
%>
这两个注销按钮适用于不同类型的用户。谁直接在您的网站上注册,b。谁通过 facebook 注册到您的网站
- routes.rb 中 logout_both 的路由
map.connect "/logout_both",
:控制器=>“用户”,
:action=>"logout_both"
-
users_controller.rb 中 logout_both 的操作
def logout_both
current_user_session.destroy
#clear_facebook_session_information
flash[:notice] = "注销成功!"
redirect_to root_path end #方法logout_both结束
您需要确保控制器中没有定义可能限制 logout_both 操作在没有会话的情况下执行的过滤器。
哦,是的,如果您想知道为什么“clear_facebook_session_information”会在操作中被注释掉。那么不用担心,在进入这个动作之前你已经退出了facebook,这行就不再需要了。老大,我们正在使用“fb_logout_link”,它首先将您注销,然后将您重定向到这个新操作。
嗯,就是这样。如果这不这样做............像我一样弄脏你的手......挖进去......自己解决它。 Facebooker很深,但有一个明确的结局!!!
再次非常感谢 mangino 和 kalasjocke 让 facebook 连接几乎没有对 rails 造成任何痛苦。
一个澄清的人......在我上面的答案中......有一个小问题,即......注销后,如果你刷新页面......它会再次显示你在你的网站上登录......但是你是成功退出 Facebook。
我错了,一个大的澄清......事实上,你的“logout_both”操作中确实需要这两行
def logout_both <br/>
current_user_session.destroy<br/>
clear_facebook_session_information #MANDATORY TO COMPLETELY CLEAR COOKIES<br/>
reset_session # TO BE 100% sure you can use it optionally<br/>
flash[:notice] = "Logout successful!"<br/>
redirect_to root_path <br/>
end