一如既往:我非常喜欢这个菜鸟,因为你会从问题中看出来。
我正在使用Xamarin.Android中的Azure Wams,它似乎是一个很棒的工具。它大大地登录了Xamarin.Android中的用户。当我希望用户能够注销然后使用其他帐户登录时(我使用Google进行身份验证),我的问题就来了。我曾经能够使用退出按钮,如下所示:
登录时,AuthenticationToken保存在String中供以后使用。因此,当用户确认他想要注销时,我只是UserAuth = String.Empty然后我再次调用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后,情况就不再如此了。现在,它会在短时间内进行身份验证,然后它会直接返回,就好像用户以前所述的exaxt方式登录一样。
我意识到这可能是因为在Wams的某处保存了一些共享偏好。我已经研究了清除这些i Java的方法,但是我无法在C#中重新创建它们。
client.Logout()似乎没有单独清除它们。这就是我试图重新创建其余内容的方式:
private void ClearPreferences(){
var prefs = this.GetSharedPreferences("UserDate", 0);
var editor = prefs.Edit ();
editor.Clear ();
editor.Commit ();
}
这没有任何作用。那么,任何人都可以帮助我吗?我如何重置它,以便用户能够使用其他帐户登录 - 或者让朋友登录他们的手机?提前致谢!
答案 0 :(得分:2)
好的,事实证明,信息由auth提供商存储为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 ();
}