ruby-on-rails – 如何在使用设计omniauth rails 3时清除faceboo
发布时间:2020-12-17 01:59:56 所属栏目:百科 来源:网络整理
导读:我实现了帐户创建和登录使用facebook connect使用devise omniauth on rails 3.然而,我的问题是在用户注销时清除facebook会话和cookie.目前,当用户退出时,似乎清除当前会话.但是,当用户再次登录时,由于facebook cookie,它会自动登录用户.我想使用sign_out方法
我实现了帐户创建和登录使用facebook connect使用devise omniauth on rails 3.然而,我的问题是在用户注销时清除facebook会话和cookie.目前,当用户退出时,似乎清除当前会话.但是,当用户再次登录时,由于facebook cookie,它会自动登录用户.我想使用sign_out方法来清除cookie,这样当用户下次尝试登录时,它会要求用户使用facebook登录.
现在我使用默认设计路线“devise_for:users”.我可以通过创建“类SessionsController< Devise :: SessionsController”来覆盖它吗?如果是这样,我是否需要同时编写create和destroy方法?在destroy方法中,如何准确清除fb cookie? 任何帮助将非常感激! 解决方法
为了清除FB会话,您必须使用FB JS SDK.
所以,这就是我所做的. 首先,init FB JS.我使用了部分,但你可以把它放在布局中 <script type="text/javascript"> window.fbAsyncInit = function() { FB.init({ appId: '[APP_ID]',status: true,cookie: true,xfbml: true}); }; (function() { var e = document.createElement('script'); e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; e.async = true; document.getElementById('fb-root').appendChild(e); }()); </script> 然后,我将logout链接绑定到FB.logout函数,该函数调用application.js中的destroy_user_session_path. $(function() { $('#logout').click(function(e) { FB.logout(function(response) { var url = $('#logout').attr('redirect_url'); $.ajax({ url: url,type: 'DELETE',success: function(msg) { window.location = '/'; } }); }); e.preventDefault(); }); }); 我的application.html.erb. <% if user_signed_in? %> <p><%= link_to "logout","#",:id => "logout",:redirect_url => destroy_user_session_path %></p> <p>Hi,<%= current_user.email %></p> <% else %> <p><%= link_to 'Login with Facebook','/auth/facebook/' %></p> <% end %> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |