0

У меня есть .net backend Azure Mobile Service. Я пытаюсь получить текущую информацию пользователя от клиента Android. Я использую следующий код:Azure mobile service getCurrentUser

private void authenticate() { 

    LoginRequest login = new LoginRequest(); 
    login.setUsername(txtUsername.getText().toString()); 
    login.setPassword(txtPassword.getText().toString()); 
    ServiceConstant.mClient.invokeApi("CustomLogin", login, LoginRequest.class, 
      new ApiOperationCallback<LoginRequest>() { 
       @Override 
       public void onCompleted(LoginRequest result, 
         Exception exception, ServiceFilterResponse response) { 
        if (exception == null) { 
         try 
         { 
          if (chkRemember.isChecked()) 
          { 
           cacheUserToken(ServiceConstant.mClient.getCurrentUser()); 
           Toast.makeText(getApplicationContext(),"cache success",Toast.LENGTH_SHORT).show(); 
          } 
         } 
         catch (Exception e) 
         { 
          Log.e(TAG, "cache fail"); 
          Toast.makeText(getApplicationContext(), 
            "cache fail", 
            Toast.LENGTH_SHORT).show(); 
         } 
         Log.i(TAG, "giris basarili " + result); 

         Intent intent = new Intent(LoginActivity.this, DeviceScanActivity.class); 
         startActivity(intent); 

        } else { 
         Log.e(TAG, "login fail" + exception); 
         alert("login", "success\n" + exception); 
        } 
       } 
      }); 
} 

Когда я пытаюсь получить текущего пользователя, он возвращает null. Что мне делать для получения информации о текущем пользователе. Я очень новичок в Azure Mobile Service, и я не знаю, как решить эту проблему.

+0

Вы еще не установили аутентификацию? https://azure.microsoft.com/en-us/documentation/articles/mobile-services-dotnet-backend-android-get-started-users/ –

+0

Да, я уже добавил код аутентификации –

ответ

1

Этот пользовательский код входа основан на пользовательском API, поэтому его результат не сохраняется автоматически, как при работе со встроенными функциями входа.

Вам необходимо установить поле CurrentUser mClient вручную, когда вы получите результат от вашего API.

Если вы следите за this custom auth tutorial, тип возврата будет соответствовать типу MobileServiceUser клиента, и вы можете установить его значение. Более подробно см. Последний раздел этого учебника под названием «Войдите с помощью пользовательской проверки подлинности с клиента».

+0

в первую очередь спасибо для ответа я следил за конструкцией, и это происходит следующим образом: http://imgur.com/Niq00pO после этого, когда я пытаюсь кэшировать пользователя. mAuthenticationToken value кажется нулевым, как этот http://imgur.com/mpPGiTi, это проблема? что я могу сделать с этого момента, вы даете мне какую-то идею? –

+0

Похоже, что типы не выровнены точно. Самое легкое решение, вероятно, относится к ответу как простому объекту JSON и вытаскивает значения userID и authenticationToken. Вы можете просто установить их на новый MobileServiceUser, а затем присвоить ему MobileServiceClient.CurrentUser. – mattchenderson

+0

Как я могу извлечь эти значения из response.getContent()? –