gpt4 book ai didi

javascript - 使用 JavaScript 从 UIWebView 清除凭据

转载 作者:可可西里 更新时间:2023-11-01 04:00:14 24 4
gpt4 key购买 nike

一些上下文:

这是一个使用 deviseomniauth-facebookrails 4.2 网络应用程序,它为 设置 true >apple-mobile-web-app-capable

通过 Safari 中的 URL,用户可以将网络应用程序添加到他们的 iOS 设备的主屏幕。

这里的问题是,当用户第二次使用 Facebook 登录时,它会像以前一样使用同一用户进行身份验证,即使用户从 Web 应用程序和 Safari 中的 Facebook 注销也是如此。

In other words, once you login with Facebook, the web app(UIWebView), applies the same credentials every time. Regardless of your Facebook's current user in Safari or if you logged out from the web app.

即使网络应用程序 - UIWebView 从 iOS 设备的主屏幕中删除,也会发生这种情况。

此功能适用于浏览器 - Safari、Mobile Safari 和 Chrome。

我发现 Safari 和 UIWebView 将数据保存在不同的地方,但不确定如何访问 UIWebView 数据(cookies/session/credentials)以将其删除。

我想通过 JavaScript 来做到这一点。但是,我愿意接受其他选择。请考虑这是一个 Rails 应用程序。

代码:

gem 文件

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中。该单例中还存储了一些其他好东西。我有几个想法:

  1. 通过注销然后将所有 cookie 记录到 sharedHTTPCookieStorage 中,验证您的 ruby​​ 调用实际上正在清除 cookie。如果未清除 cookie,请手动清除它们。

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

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

我意识到这些不是纯 JavaScript 选项。我不确定您的要求是否可以通过 JavaScript 桥实现。

关于javascript - 使用 JavaScript 从 UIWebView 清除凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37646671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com