使用JavaScript从UIWebView清除凭据

时间:2016-06-05 20:55:16

标签: javascript ios ruby-on-rails devise uiwebview

某些背景信息:

这是使用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" }/


1 个答案:

答案 0 :(得分:0)

UIWebView Cookie通常存储在NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies中。还有一些其他好东西存储在该单身人士中。我有一些想法:

  1. 通过注销然后记录sharedHTTPCookieStorage中的所有Cookie,确认您的ruby调用正在清除Cookie。如果未清除cookie,请手动清除它们。

  2. 设备的Safari设置可能会干扰Cookie的存储和删除。验证您的Cookie接受政策:NSHTTPCookieStorage.sharedHTTPCookieStorage().cookieAcceptPolicy = NSHTTPCookieAcceptPolicy.Always

  3. 考虑使用WKWebView和未记录的WKProcessPool来刷新和管理Cookie。

  4. 我意识到这些不是纯粹的JavaScript选项。我不确定你能通过JavaScript桥接到什么问题。