CognitoUserPool userPool = new CognitoUserPool(this, AWSMobileClient.getInstance(). GetConfiguration()); дает нулевое значение
Я использую AWS cognito для входа в систему. Я не хочу жестко задавать значения userPoolId, clientId, clientSecret и region. Я нашел способ, используя
CognitoUserPool userPool = new CognitoUserPool(this, AWSMobileClient.getInstance(). GetConfiguration());
но userPool дает нулевое значение.
Файл awsconfiguration.json находится в файле res/raw/awsconfiguration.json.
Спасибо за помощь заранее!!!
1 ответ
Развивая точку зрения, высказанную Karthikeyan в комментарии, вы должны убедиться, что AWSMobileClient действительно инициализирован, прежде чем вы сможете использовать его для получения конфигурации AWS. Следующий фрагмент демонстрирует один из способов достижения того, что вы ищете:
CognitoUserPool cup;
final CountDownLatch latch = new CountDownLatch(1);
AWSMobileClient.getInstance().initialize(getApplicationContext(), new Callback<UserStateDetails>() {
@Override
public void onResult(UserStateDetails userStateDetails) {
Log.i("INIT", "onResult: " + userStateDetails.getUserState());
latch.countDown();
}
@Override
public void onError(Exception e) {
Log.e("INIT", "Initialization error.", e);
latch.countDown();
}
}
);
try {
latch.await();
cup = new CognitoUserPool(getApplicationContext(), AWSMobileClient.getInstance().getConfiguration());
} catch (InterruptedException e) {
e.printStackTrace();
}
Надеюсь, поможет!
Согласно документации,
https://aws-amplify.github.io/docs/sdk/android/authentication
Вам нужно перейти в MainActivity и внутри onCreate() запустить процедуру initialize():
AWSMobileClient.getInstance().initialize(getApplicationContext(), new Callback<UserStateDetails>() {
@Override
public void onResult(UserStateDetails userStateDetails) {
Log.i("INIT", "onResult: " + userStateDetails.getUserState());
}
@Override
public void onError(Exception e) {
Log.e("INIT", "Initialization error.", e);
}
}
);
Поскольку вы еще не вошли в систему, он напечатает состояние SIGNED_OUT.