gpt4 book ai didi

cookies - Android 上的 Xamarin.Auth、WebView 清除 Cookie

转载 作者:行者123 更新时间:2023-12-01 17:43:36 30 4
gpt4 key购买 nike

我已经尝试了所有我能在网上找到的关于使用 Xamarin.Auth 清除 Android WebView 的 cookie 的方法。 Auth 库不公开 Android WebView;我无法使用其 WebSettings,也无法清除该 WebView 对象上的缓存。

Xamarin.Auth 公开了清除 cookie 的方法:

 public static void ClearCookies()
{
global::Android.Webkit.CookieSyncManager.CreateInstance(global::Android.App.Application.Context);
global::Android.Webkit.CookieManager.Instance.RemoveAllCookie();
}

这似乎对 cookies 没有影响。我可以在通过 Chrome 调试时看到 cookie,并在那里清除它确实会删除所有 cookie。

我尝试过 CookieManager.Instance.RemoveAllCookies(null);CookieManager.Instance.RemoveSessionCookies(null);,在 Xamarin.Auth 创建其新的 WebView 之前创建一个新的 WebView自己的实例,将 SetAcceptCookies 设置为 false,清除 WebViewStorage,并删除“webview.db”和“webviewCache.db”。但所有 cookie 仍然保留。

我看过大量的建议和答案。

使用 Xamarin.Auth v1.5.0.3 并在 S4 Mini、S7、LG G3 Beat 上进行测试。

*编辑
由于 CookieManager.Instance.Sync() 异步运行,是否可能没有及时完成或根本没有运行?

最佳答案

下面的代码对您有用

Xamarin.Android:

 var cookieManager = CookieManager.Instance;
cookieManager.RemoveAllCookie();

Xamarin.iOS:

 NSHttpCookieStorage CookieStorage = NSHttpCookieStorage.SharedStorage;
foreach (var cookie in CookieStorage.Cookies)
CookieStorage.DeleteCookie(cookie);
}

Xamarin.Forms:

PCL:

IClearCookies.cs

 using System;
namespace POCDemo
{
public interface IClearCookies
{
void Clear();
}
}

Android:

IClearCookiesImplementation.cs

using POCDemo.Droid;
using Xamarin.Forms;
using System.Net;
using Android.Webkit;

[assembly: Dependency(typeof(IClearCookiesImplementation))]
namespace POCDemo.Droid{
public class IClearCookiesImplementation : IClearCookies{
public void Clear(){
var cookieManager = CookieManager.Instance;
cookieManager.RemoveAllCookie();
}
}
}

iOS

IClearCookiesImplementation.cs

using POCDemo.iOS;
using Xamarin.Forms;
using System.Net;
using Foundation;

[assembly: Dependency(typeof(IClearCookiesImplementation))]
namespace POCDemo.iOS{
public class IClearCookiesImplementation : IClearCookies{
public void Clear(){
NSHttpCookieStorage CookieStorage = NSHttpCookieStorage.SharedStorage;
foreach (var cookie in CookieStorage.Cookies)
CookieStorage.DeleteCookie(cookie);
}
}
}

调用依赖服务

PCL:

DependencyService.Get<IClearCookies>().Clear();

这对我有用

关于cookies - Android 上的 Xamarin.Auth、WebView 清除 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44862027/

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