我有一个使用Azure MobileServiceClient(DataService.client)的Xamarin Android应用程序。设置为使用Google身份验证。我登录如下:

          var user = await DataService.client.LoginAsync(this,
                MobileServiceAuthenticationProvider.Google, "myapp");


这很好。它将打开浏览器进入Google登录页面,然后您登录。一旦在Android设备上执行一次此操作,它将不再提示您输入登录信息。我遇到一种情况,我想以其他用户身份登录以测试一些内部应用程序权限。我创建了一个注销函数,如下所示:

        await DataService.client.LogoutAsync();


这会将您注销,但是下次您需要进行身份验证时,它不会提示您输入凭据。它以同一个人的身份重新登录。有没有办法清除登录信息,以便再次询问您的用户名?

最佳答案

AFAIK,MobileServiceClient.LogoutAsync()仅清除移动客户端中当前MobileServiceClient实例的MobileServiceClient.CurrentUser。为了完全注销,在执行MobileServiceClient.LogoutAsync()之前,您需要按照以下方式手动向移动后端发送注销请求。

Get https://{your-app-name}.azurewebsites.net/.auth/logout
Header X-ZUMO-AUTH:{MobileServiceClient.CurrentUser.MobileServiceAuthenticationToken}


您可以阅读adrian Hall关于Implementing a LogoutAsync() method的书中的详细信息。

10-04 12:43