2014-06-06 2 views
0

항상 그렇듯이 : Im 꽤 멍청한 놈. 질문에서 볼 수 있듯이.Cant 로그 아웃 Azure Wams MobileServiceUser

저는 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"); 
     } 
    } 

나를 위해 인증 창을 다시 시작하는 데 사용하고, 사용자 hes 새로운 계정으로 로그인 - 정보는 다른 활동에서 사용하기 위해 환경 설정에 저장되는 등등. 음, Xamarin을 업데이트하고 라이센스를 인디로 업그레이드 한 후에는 더 이상 그렇지 않습니다. 이제는 Authenticate를 잠깐 동안 실행 한 다음 곧장 돌아가서 사용자가 이전에 수행 한 exaxt 방식으로 로그인 한 것처럼 작동합니다.

내가 알고있는 것은 아마도 공유 공유가 Wams의 어딘가에 저장되어 있기 때문일 것입니다. 필자는 Java를 지우는 방법을 연구했지만 C#에서는 다시 만들 수 없었습니다.

client.Logout()이 그것들을 단독으로 지우지 않는 것 같습니다.

private void ClearPreferences(){ 
     var prefs = this.GetSharedPreferences("UserDate", 0); 
     var editor = prefs.Edit(); 
     editor.Clear(); 
     editor.Commit(); 

    } 

이 아무것도하지 않는 :이 내가 그것의 나머지를 recreatet을 시도하는 방법이다. 그럼, 누구도 나와 함께 도와 줄 수 있니? 다시 설정하면 사용자가 다른 계정으로 로그인 할 수 있습니다. 예를 들어 친구가 전화로 로그인하도록 할 수 있습니까? 미리 감사드립니다!

답변

2

OK, 정보가 인증 공급자에 의해 쿠키로 저장됩니다. 로그 아웃하고 쿠키를 삭제해야합니다. 그리고 그것은 매력처럼 작동합니다. 다음은 쿠키를 삭제하는 방법입니다.

client.Logout(); 
     ClearCookies(); 
     await ConnectToMobileService(); 
    } 

    public static void ClearCookies() { 
     Android.Webkit.CookieSyncManager.CreateInstance (Android.App.Application.Context); 
     Android.Webkit.CookieManager.Instance.RemoveAllCookie(); 
    }