某些背景信息:
这是使用parseInt(input, 10)
和rails
的{{1}} 4.2网络应用,为devise
设置omniauth-facebook
通过Safari中的网址,用户可以将网络应用添加到其iOS设备的主屏幕中。
这里的问题是,当用户第二次登录w / Facebook时,即使用户从Web应用程序和Safari中的Facebook注销,它也会使用与之前相同的用户进行身份验证。
换句话说,一旦您使用Facebook登录,Web应用程序(UIWebView)每次都会应用相同的凭据。无论您的Facebook在Safari中的当前用户,或者您是否从Web应用程序注销。
即使Web应用程序 - UIWebView已从iOS设备的主屏幕中删除,也会发生这种情况。
此功能适用于浏览器 - Safari,Mobile Safari和Chrome。
我发现Safari和UIWebView在不同的地方保存数据,但不确定如何访问UIWebView数据(cookies / session / credentials)以删除它。
我想通过JavaScript来做到这一点。但是,我对其他选择持开放态度。请注意,这是一个Rails应用程序。
代码:
的Gemfile
true
application.html.haml
apple-mobile-web-app-capable
查看(HAML)
gem "rails", "~> 4.2"
gem "devise", "~> 3.5"
gem "omniauth-facebook", "~> 3.0"
sessions_controller.rb - 来自Devise
%head
%meta{ name: "apple-mobile-web-app-capable", content: "yes" }/
答案 0 :(得分:0)
UIWebView
Cookie通常存储在NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies
中。还有一些其他好东西存储在该单身人士中。我有一些想法:
通过注销然后记录sharedHTTPCookieStorage
中的所有Cookie,确认您的ruby调用正在清除Cookie。如果未清除cookie,请手动清除它们。
设备的Safari设置可能会干扰Cookie的存储和删除。验证您的Cookie接受政策:NSHTTPCookieStorage.sharedHTTPCookieStorage().cookieAcceptPolicy = NSHTTPCookieAcceptPolicy.Always
考虑使用WKWebView
和未记录的WKProcessPool
来刷新和管理Cookie。
我意识到这些不是纯粹的JavaScript选项。我不确定你能通过JavaScript桥接到什么问题。