每个移动平台中 Cookie 的优点在于它们是跨应用程序共享的 cookie 容器。WebView 不保存平台所保存的 Cookie,因此即使是 HTTP 调用和不同的 WebView 都可以访问相同的共享 cookie 容器。
然而,它们可能很难从某些平台中退出,因为需要反思。如果您的 SSO 解决方案只要求他们先访问网页进行登录,那么无论如何他们都共享相同的 cookie,您无需执行任何操作。
安卓
Android 有 2 个用于 HTTP 和 WebView 的独立 cookie 容器。它是奇怪的一个。因此你有
using System.Net.Http;
private static CookieContainer _cookieContainer = new System.Net.CookieContainer();
private static Android.Webkit.CookieManager _cookieManager = Android.Webkit.CookieManager.Instance;
使用 HTTP 请求,您可以这样做
HttpClient client = new HttpClient(new HttpClientHandler() { CookieContainer = cookieContainer });
WebView 使用另一个,您可以在每个容器中获取和设置 cookie。
iOS
这一个很简单,它们都存储在
NSHttpCookieStorage.SharedStorage.Cookies
WinRT
using Windows.Web.Http; //NOT: Microsoft.Net.Http
var filter = new HttpBaseProtocolFilter();
HttpClient client = new HttpClient(filter);
// Use this, while it comes from an instance, its shared across everything.
filter.CookieManager