如何解决是否可以从Facebook登出
我在应用程序中添加了Facebook登录名。当我登录我的应用程序时,它也登录到SAFARI,以便下次我要登录时,不需要输入登录名和密码。您可能按继续,并且您已经登录。我创建了一种注销方法,但是无法正常工作。它在模拟器中工作,因此我可以关闭我的应用程序,然后打开Safari并转到Facebook.com,然后按注销。最后,我打开我的应用程序,按Facebook登录并获得登录名和密码字段。
public void Logout()
{
_loginManager.LogOut();
NSHttpCookieStorage storage = NSHttpCookieStorage.SharedStorage;
foreach (NSHttpCookie cookie in storage.Cookies)
{
if(cookie.Domain == ".facebook.com")
{
storage.DeleteCookie(cookie);
}
}
}
每次输入登录名和密码后,如何从FB注销?
此图显示我的凭据已经输入:
解决方法
您可能正在寻找WebKit中的方法和类。另请参阅此论坛帖子:https://forums.xamarin.com/discussion/149720/delete-web-cache-javascript-storage
您可以使用cookie和会话(如果要清除其他内容,WKWebsiteDataType中的类型更多)
var websiteDataTypes = new NSSet<NSString>(
WKWebsiteDataType.Cookies,WKWebsiteDataType.SessionStorage);
或者您可以使用WKWebsiteDataStore.AllWebsiteDataTypes
清除所有内容。
然后您可以通过以下方式获取这些类型:
WKWebsiteDataStore.DefaultDataStore.FetchDataRecordsOfTypes()
它具有您需要收听的回调,以获取这些信息。然后,您可以使用以下命令删除所有这些记录:
WKWebsiteDataStore.DefaultDataStore.RemoveDataOfTypes();
将所有内容放在一起,例如:
var websiteDataTypes = new NSSet<NSString>(
WKWebsiteDataType.Cookies,WKWebsiteDataType.SessionStorage);
WKWebsiteDataStore.DefaultDataStore.FetchDataRecordsOfTypes(websiteDataTypes,records =>
{
for (nuint i = 0; i < records.Count; i++)
{
var record = records.GetItem<WKWebsiteDataRecord>(i);
WKWebsiteDataStore.DefaultDataStore.RemoveDataOfTypes(
record.DataTypes,new[] {record},() => {}
);
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。