无法注销Azure Wams MobileServiceUser
本文关键字:Wams MobileServiceUser Azure 注销 | 更新日期: 2023-09-27 18:07:10
一如既往:我是个新手,从问题中你会发现。
我正在玩Azure Wams在Xamarin。Android,它似乎是一个很棒的工具。它在Xamarin中登录一个用户。Android。我的问题来了,当我希望用户能够注销,然后登录与另一个帐户(我使用谷歌的身份验证)。我曾经可以通过注销按钮来使用它,像这样:
登录时,AuthenticationToken保存在字符串中以供以后使用。因此,当用户确认他想要注销时,只需UserAuth = String。空,然后我再次调用ConnectToMobileService():
public async Task ConnectToMobileService ()
{
try
{
CurrentPlatform.Init ();
client = new MobileServiceClient(
Constants.ApplicationURL,
Constants.ApplicationKey, progressHandler);
if (string.IsNullOrEmpty(UserAuth)) {
await Authenticate();
UserId = user.UserId;
await CreateTables();
await CheckUserId ();
}
else if (!string.IsNullOrEmpty(UserAuth)) {
client.CurrentUser = new MobileServiceUser(UserId);
client.CurrentUser.MobileServiceAuthenticationToken = (UserAuth);
await CreateTables();
}
}
catch (Exception e)
{
CreateAndShowDialog(e, "Error");
}
}
这用于为我重新启动身份验证窗口,并且用户使用他的新帐户登录-而信息保存在首选项中用于其他活动等等。在更新了Xamarin并将我的执照升级为Indie之后,情况就不一样了。现在,它启动了一小秒钟的Authenticate,然后它直接返回,就像用户以之前的方式登录一样。
我意识到这可能是因为在某个地方为Wams保存了一些共同的偏好。我研究了在Java中清除这些的方法,但是我还不能在c#中重新创建它们。
客户端。Logout()似乎不能单独清除它们。这是我如何尝试重新创建它的其余部分:
private void ClearPreferences(){
var prefs = this.GetSharedPreferences("UserDate", 0);
var editor = prefs.Edit ();
editor.Clear ();
editor.Commit ();
}
这不起任何作用。有谁能帮帮我吗?我如何重置它,以便用户能够用另一个帐户登录-或者例如让朋友在他们的手机上登录?提前感谢!
好的,所以事实证明信息是由验证提供者存储为cookie的。你必须注销并清除cookie。然后它就像一个魔法。下面是清除cookie的方法:
client.Logout ();
ClearCookies ();
await ConnectToMobileService ();
}
public static void ClearCookies () {
Android.Webkit.CookieSyncManager.CreateInstance (Android.App.Application.Context);
Android.Webkit.CookieManager.Instance.RemoveAllCookie ();
}