#android #rest #aws-api-gateway #amazon-cognito #aws-amplify
#Android #отдых #aws-api-gateway #amazon-cognito #aws-amplify
Вопрос:
Я пытаюсь использовать REST API AWS Amplify в своем приложении для Android. Я сделал именно так, как было написано в документах, но я все еще получаю эту ошибку:
ApiException{message=AWSApiPlugin зависит от AWSCognitoAuthPlugin, но в настоящее время он отсутствует, причина = java.lang.Исключение IllegalStateException: пытался получить плагин, но этот плагин отсутствовал. Проверьте, был ли плагин добавлен изначально или, возможно, уже был удален., recoverySuggestion=Перед настройкой Amplify обязательно добавьте AWSCognitoAuthPlugin так же, как вы добавили AWSApiPlugin.}
Это зависимости AWS в моем файле Gradle:
dependencies {
// ...
implementation 'com.amplifyframework:aws-api:1.6.4'
implementation 'com.amplifyframework:core:1.6.4'
implementation 'com.amazonaws:aws-android-sdk-apigateway-core:2.3.2'
implementation 'com.amazonaws:aws-android-sdk-cognito:2.3.2'
// ...
}
Это мой класс приложения:
class MyApp : Application() {
override fun onCreate() {
super.onCreate()
try {
Amplify.addPlugin(AWSApiPlugin())
Amplify.configure(applicationContext)
Log.i("MyAmplifyApp", "Initialized Amplify.")
} catch (error: AmplifyException){
Log.e("MyAmplifyApp","Could not initialize Amplify.",error)
}
}
}
Ответ №1:
Эта ошибка возникает из-за того, что вам нужно вызвать Amplify.addPlugin перед его использованием.
Также может быть, произошла ошибка при инициализации плагина, поэтому проверьте предложение в ошибке при обнаружении исключения.
Поэтому вызывайте любой плагин, который вы используете, предпочтительно в своем классе приложения (MyApp.java ) код:
общедоступный класс MyAmplifyApp расширяет приложение {
String tag = "xxx";
@Override
public void onCreate() {
super.onCreate();
//xxx
try {
Amplify.addPlugin(new AWSDataStorePlugin());
Amplify.addPlugin(new AWSCognitoAuthPlugin());
Amplify.configure(getApplicationContext());
Log.i(tag, "Initialized Amplify");
} catch (AmplifyException error) {
Log.e(tag, "Could not initialize Amplify", error);
}
}
}
Ответ №2:
Как вы пытаетесь пройти аутентификацию с помощью своего API? Что authType
перечислено в вашем app/src/main/res/raw/amplifyconfiguration.json
списке ?
Если это что-то, связанное с Cognito, вам нужно добавить категорию Auth. Пожалуйста, следуйте руководству по началу работы для авторизации.
Если вы не пытаетесь использовать Cognito, обновите свой API, чтобы использовать другой тип аутентификации с помощью CLI:
amplify update api
amplify push
Например, вы можете выбрать авторизацию ключа API, которая, по сути, делает ваш API общедоступным для всех, кто знает этот ключ.
Ответ №3:
Согласно официальному документу Добавление этой строки в мою конфигурацию решило мою проблему
Amplify.addPlugin(new AWSApiPlugin());
Так что это стало выглядеть так
try {
Amplify.addPlugin(new AWSDataStorePlugin());
Amplify.addPlugin(new AWSApiPlugin());
Amplify.configure(getApplicationContext());
Log.i("MyAmplifyApp", "Initialized Amplify");
} catch (AmplifyException error) {
Log.e("MyAmplifyApp", "Could not initialize Amplify", error);
}
Ответ №4:
У меня была такая же проблема, и предыдущие ответы указали мне правильное направление. Мне не хватало строки ниже в моей функции инициализации, как только я добавил это, все работало так, как планировалось.
Amplify.addPlugin(AWSCognitoAuthPlugin())