Alcuni contesto:Cancella credenziali da UIWebView con JavaScript
Si tratta di un'applicazione rails
4,2 web utilizzando devise
e omniauth-facebook
che definisce true
per apple-mobile-web-app-capable
da un URL in Safari, gli utenti possono aggiungere l'applicazione web per la loro schermata iniziale del dispositivo iOS.
Il problema qui è che quando gli utenti effettuano l'accesso w/Facebook per la seconda volta, si autentica con lo stesso utente di prima, anche se l'utente si è disconnesso dall'app Web e da Facebook in Safari.
In altre parole, una volta effettuato l'accesso con Facebook, l'app Web (UIWebView) applica sempre le stesse credenziali. Indipendentemente dall'attuale utente di Facebook in Safari o se si è disconnessi dall'app Web.
Ciò accade anche se l'app Web - UIWebView è stata rimossa dalla schermata principale del dispositivo iOS.
Questa funzionalità funziona bene dai browser - Safari, Mobile Safari e Chrome.
Ho trovato che Safari e UIWebView salvano i dati in posti diversi, ma non sono sicuro che come accedere ai dati di UIWebView (cookie/sessione/credenziali) per rimuoverli.
Mi piacerebbe farlo tramite JavaScript. Tuttavia, sono aperto ad altre opzioni. Per favore, tieni in considerazione che questa è un'app Rails.
Il codice:
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" }/
vista (HAML)
= link_to destroy_user_session_path, method: :delete do
.css_classes Sign Out
sessions_controller.rb - da Devise
def destroy
super
cookies.clear
end
Grazie JAL. Come posso accedere a 'NSHTTPCookieStorage.sharedHTTPCookieStorage(). Cookies'? Ho cercato su Google, ho trovato: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSHTTPCookieStorage_Class/index.html Ma non ho alcuna esperienza con Swift/Objective-C. In modo che, non so nemmeno dovessero guardare. – Horacio
@Horacio Stai usando Objective-C o Swift? Poiché hai menzionato 'UIWebView', ho presupposto che tu disponga di un'app per la visualizzazione web della shell che carica un URL. In base alla tua lingua, posso fornire uno snippet di codice per accedere ai cookie dalla memoria dei cookie. – JAL
A meno che non si stia semplicemente utilizzando Safari e si stia creando un collegamento a un sito Web per la propria pagina Web e non si disponga di un'app di shell. – JAL