Ich hatte einen Swing-Dialog, der JavaFX WebView
verwendet, um die oAuth 2.0-URL vom Google-Server anzuzeigen.
Jedes Mal erhalte ich die folgende URL von Google. Ich werde die SimpleSwingBrowser
verwenden, um die folgende URL zu laden.
Während der ersten Zeit wird die folgende Benutzeroberfläche angezeigt.
Nach mir
SimpleSwingBrowser
, um die in Schritt Ich erwarte, dass Google mir Screen One erneut zeigt, da dies eine neue Browsersitzung ist. Was ich zum zweiten Mal bekomme, ist Screen Two.
Es scheint, dass in der WebView
einige Session / Cache / Cookies gespeichert sind, obwohl es eine komplett neue Instanz ist.
Ich erwarte, dass ich wieder zu Screen One komme, damit ich mehrere Benutzerkonten unterstützen kann.
Wie kann ich die Sitzung / den Cache / Cookie in WebView
löschen?
Session-Cookies für JavaFX WebView werden in java.net.CookieHandler
gespeichert.
Um Cookies selbst zu verwalten, erstellen Sie eine neue Instanz von java.net.CookieManager
:
Setzen Sie es dann als Standard:
%Vor%Um Cookies zu löschen, rufen Sie einfach die removeAll-Methode auf:
%Vor%oder einfach eine neue Instanz des Cookie-Managers erstellen und als Standard festlegen:
%Vor% Ich habe JavaFX 8 WebView verwendet, um OAuth 2.0 sowohl von Google als auch von Dropbox anzuzeigen. Es hat sich herausgestellt, dass eine neue Instanz von java.net.CookieManager()
als Standard mit Google gearbeitet hat (und natürlich die Session-Cookies entfernt hat), aber ich konnte mich nicht mehr mit meinem Dropbox-Konto anmelden. Der "Sing in" Button hat einfach nicht funktioniert.
Ich debuggte und fand heraus, dass standardmäßig eine Instanz von com.sun.webkit.network.CookieManager
verwendet wird. Also habe ich
was mein Problem gelöst hat. Aufgrund seiner javadoc ist es RFC 6265-konform, das ist die aktuelle Definition von HTTP-Cookies und Set-Cookie-Header-Felder.
Sie müssen das JDK (nicht nur die JRE) aufgrund einiger Zugriffsbeschränkungen in der JRE als Systembibliothek Ihres Projekts verwenden.