У меня есть UIWebView, который аутентифицирует пользователя. Я хочу включить одиночный вход. Для этого я хочу сохранить файлы cookie, когда пользователь будет сначала аутентифицирован, а затем при следующем запуске приложения файлы cookie должны быть автоматически переданы в UIWebView и аутентифицировать пользователя без повторного ввода его учетных данных.
Я делаю что-то вроде ниже, чтобы использовать UIWebView
var uri = new Uri(AuthUrl);
var nsurl = new NSUrl(uri.GetComponents(UriComponents.HttpRequestUrl, UriFormat.UriEscaped));
wvLogin.LoadRequest(new NSUrlRequest(nsurl));
CookieManager.cs
public static void SaveCookies()
{
var cookieData = new NSMutableArray ();
var cookieStorage = NSHttpCookieStorage.SharedStorage;
foreach (var nscookie in cookieStorage.Cookies) {
var cookieDictionary = new NSMutableDictionary ();
cookieDictionary.Add (NSHttpCookie.KeyName, new NSString (nscookie.Name));
cookieDictionary.Add (NSHttpCookie.KeyValue,new NSString ( nscookie.Value));
cookieDictionary.Add (NSHttpCookie.KeyDomain,new NSString ( nscookie.Domain));
cookieDictionary.Add (NSHttpCookie.KeyPath, new NSString (nscookie.Path));
cookieDictionary.Add (NSHttpCookie.KeySecure, new NSString ( nscookie.IsSecure.ToString()));
cookieDictionary.Add (NSHttpCookie.KeyVersion, new NSString (nscookie.Version.ToString()));
if (nscookie.ExpiresDate != null) {
cookieDictionary.Add (NSHttpCookie.KeyExpires, nscookie.ExpiresDate);
}
cookieData.Add (cookieDictionary);
}
cookieData.WriteToFile (StoragePath(), true);
}
public static string StoragePath()
{
//var paths = NSSearchPath.GetDirectories (NSSearchPathDirectory.LibraryDirectory, NSUserDomainMask, true);
var paths = NSSearchPath.GetDirectories(NSSearchPathDirectory.LibraryDirectory, NSSearchPathDomain.User, true);
return paths [0].ToString ();
}
public static void DeleteCookies()
{
NSHttpCookieStorage cookieStorage = NSHttpCookieStorage.SharedStorage;
foreach (var nscookie in cookieStorage.Cookies)
{
cookieStorage.DeleteCookie(nscookie);
}
NSUserDefaults.StandardUserDefaults.Synchronize ();
}
public static void LoadCookies()
{
var cookies = NSMutableArray.FromFile (StoragePath());
var cookieStorage = NSHttpCookieStorage.SharedStorage;
foreach (var nscookie in cookieStorage.Cookies)
{
cookieStorage.SetCookie(nscookie);
}
}
LoginScreen.cs
void wvLogin_LoadFinished(object sender, EventArgs e)
{
int redirectCount = 0;
redirect = System.Net.WebUtility.UrlDecode(wvLogin.Request.Url.AbsoluteString);
// Do some stuff
CookieManager.SaveCookies();
}
}
else
{
AppDelegate.Logout();
}
}
}
Как я могу это достичь? Любая помощь приветствуется как Iam, новичок в iOS и Xamarin.