一些背景:
这是一个使用rails
和devise
的omniauth-facebook
4.2网络应用程序,它将true
设置为apple-mobile-web-app-capable
用户可以从Safari中的URL将Web应用添加到其iOS设备的主屏幕。
这里的问题是,当用户第二次使用Facebook登录时,即使用户从Web应用程序和Safari中的Facebook注销,它也会使用与以前相同的用户进行身份验证。
即使将Web应用程序-UIWebView从iOS设备的主屏幕上删除,也会发生这种情况。
此功能在Safari,Mobile Safari和Chrome浏览器中均可正常使用。
我发现Safari和UIWebView将数据保存在不同的位置,但是不确定如何访问UIWebView数据(cookies / session /凭证)以将其删除。
我想通过JavaScript做到这一点。但是,我愿意接受其他选择。请考虑一下这是一个Rails应用程序。
编码:
Gemfile
gem "rails", "~> 4.2"
gem "devise", "~> 3.5"
gem "omniauth-facebook", "~> 3.0"
application.html.haml
%head
%meta{ name: "apple-mobile-web-app-capable", content: "yes" }/
查看(HAML)
= link_to destroy_user_session_path, method: :delete do
.css_classes Sign Out
sessions_controller.rb -来自Devise
def destroy
super
cookies.clear
end
最佳答案
UIWebView
cookie通常存储在NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies
中。该单例中还存储了其他一些好东西。我有一些想法:
sharedHTTPCookieStorage
中,验证实际上您的ruby调用正在清除cookie。如果未清除Cookie,请手动清除它们。 NSHTTPCookieStorage.sharedHTTPCookieStorage().cookieAcceptPolicy = NSHTTPCookieAcceptPolicy.Always
WKWebView
和未记录的WKProcessPool
刷新和管理cookie。 我意识到这些不是纯JavaScript选项。我不确定您要问的内容是否可以通过JavaScript桥实现。