Как зарегистрировать пользователя с помощью Amazon Cognito в Android (Java)? - PullRequest
0 голосов
/ 25 апреля 2020

Итак, я пытаюсь создать приложение Android и связать его с Cognito, я следую этому учебнику (это третья часть, где у меня начались проблемы), и все у него работает, но я получил эту ошибку:

E / AndroidRuntime: FATAL EXCEPTION: main Процесс: com.example.homing, PID: 22346 java .lang.IllegalStateException: Не удалось выполнить метод для android : onClick в android .view.View $ DeclaredOnClickListener.onClick (View. java: 5979) в android .view.View.performClick (View. java: 7125) в android .view.View .performClickInternal (просмотр. java: 7102) в android .view.View.access $ 3500 (просмотр. java: 801) в android .view.View $ PerformClick.run (просмотр. java: 27336) в android .os.Handler.handleCallback (Обработчик. java: 883) в android .os.Handler.dispatchMessage (Обработчик. java: 100) в android .os.Looper.l oop (Looper. java: 214) в android .app.ActivityThread.main (ActivityThread. java: 7356) в java .lang.reflect.Method.invoke (собственный метод) в com. android .internal.os.RuntimeInit $ Me thodAndArgsCaller.run (RuntimeInit. java: 492) в com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 930) Причина: java .lang.reflect.InvocationTargetException в java .lang.reflect.Method.invoke (собственный метод) в android .view.View $ DeclaredOnClickListener.onClick (просмотр. java: 5974) в android .view.View.performClick (просмотр. java : 7125) в android .view.View.performClickInternal (View. java: 7102) в android .view.View.access $ 3500 (View. java: 801) в android .view.View $ PerformClick.run (просмотр. java: 27336) в android .os.Handler.handleCallback (обработчик. java: 883) в android .os.Handler.dispatchMessage (обработчик. java: 100 ) в android .os.Looper.l oop (Looper. java: 214) в android .app.ActivityThread.main (ActivityThread. java: 7356) в java .lang.reflect .Method.invoke (собственный метод) в com. android .internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit. java: 492) в com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 930) Причина: java .lang.NoClassDefFoundError: Ошибка разрешения: Lor г / апач / Обще / регистрация / LogFactory; в com.amazon aws .util.VersionInfoUtils. (VersionInfoUtils. java: 41) в com.amazon aws .util.VersionInfoUtils.getUserAgent (VersionInfoUtils. java: 77) в com.amazon aws .ClientConfiguration. (ClientConfiguration. java: 43) в com.amazon aws .mobileconnectors. java: 36) в com.example.homing.views.SignUpActivity.signUp (SignUpActivity. java: 65) в java .lang.reflect.Method.invoke (собственный метод) в android .view. Посмотреть $ DeclaredOnClickListener.onClick (Просмотреть. java: 5974) в android .view.View.performClick (Просмотреть. java: 7125) в android .view.View.performClickInternal (Просмотреть. java: 7102) в android .view.View.access $ 3500 (View. java: 801) в android .view.View $ PerformClick.run (View. java: 27336) в android .os. Handler.handleCallback (Handler. java: 883) в android .os.Handler.dispatchMessage (Handler. java: 100) в android .os.Looper.l oop (Looper. java : 214) в android .app.A ctivityThread.main (ActivityThread. java: 7356) в java .lang.reflect.Method.invoke (собственный метод) в com. android .internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit. java) : 492) at com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 930) Причина: java .lang.ClassNotFoundException: Не удалось найти класс "org. apache .commons .logging.LogFactory "по пути: DexPathList [[zip-файл" /data/app/com.example.homing-5MXFtoCYU5up-qVfFklHMQ==/base. apk "], nativeLibraryDirectories = [/ data / app / com.example.homing-5MXFtoCYU5up-qVfFklHMQ == / lib / x86, / system / lib, / system / product / lib]]

И это приводит меня к этой строке CognitoUserPool userPool = new CognitoUserPool(context, userPoolID, clientID, null, cognitoRegion);

Полный класс:

package com.example.homing.models;

import android.content.Context;

import com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUserPool;
import com.amazonaws.regions.Regions;

public class CognitoHelper {
private final String userPoolID = "us-east-1_jA*****";
private final String clientID = "2uo5cgvjd*********";
private final String clientSecret = "";
private final Regions cognitoRegion = Regions.US_EAST_1;
private Context context;

public CognitoHelper(Context context) {
    this.context = context;
}

public String getUserPoolID() {
    return userPoolID;
}

public String getClientID() {
    return clientID;
}

public String getClientSecret() {
    return clientSecret;
}

public Regions getCognitoRegion() {
    return cognitoRegion;
}

public CognitoUserPool getUserPool() {
    CognitoUserPool userPool = new CognitoUserPool(context, userPoolID, clientID,
            null, cognitoRegion);

    return userPool;
}

}

(я добавил звезды, но у меня есть полные идентификаторы в коде .)

Нажатие кнопки моей активности:

public void signUp(View view) {
        if(passwordEdit.getText().toString().equals(confirmPasswordEdit.getText().toString())) {
            CognitoUserPool userPool = cognitoHelper.getUserPool();

            CognitoUserAttributes userAttributes = new CognitoUserAttributes();
            userAttributes.addAttribute("phone_number", phoneEdit.getText().toString());
            //userAttributes.addAttribute("picture", ); save on s3 then bring url
            userAttributes.addAttribute("name", nameEdit.getText().toString());
            userAttributes.addAttribute("birthdate", birthdayEdit.getText().toString());
            userAttributes.addAttribute("status", statusEdit.getText().toString());

            userPool.signUpInBackground(phoneEdit.getText().toString(), passwordEdit.getText().toString(),
                    userAttributes, null, signupHandler(userAttributes, userPool));
        } else {
            Log.d("AWS cognito", "Passwords dont match");
        }
    }

    private SignUpHandler signupHandler(final CognitoUserAttributes userAttributes, final CognitoUserPool userPool) {
        return new SignUpHandler() {
            @Override
            public void onSuccess(CognitoUser user, boolean userConfirmed, CognitoUserCodeDeliveryDetails cognitoUserCodeDeliveryDetails) {
                if (!userConfirmed) {
                    Log.d("AWS cognito", "Signup not confirmed " + cognitoUserCodeDeliveryDetails.getDestination());
                } else {
                    Log.d("AWS cognito", "Signup confirmed");
                }
            }

            @Override
            public void onFailure(Exception exception) {
                Log.d("AWS cognito", "Signup failed");
            }
        };
    }

Когда эта ошибка была устранена (см. Комментарии), у меня возникла новая проблема, связанная с этой ошибкой при регистрации пользователя

"Клиент попытался записать неавторизованный атрибут (Сервис: AmazonCognitoIdentityProvider; Код состояния: 400; Код ошибки: NotAuthorizedException; Идентификатор запроса: 4336c90e-f15b-4100-bd7b-47111ef64979)"

Хотя в моем пуле пользователей у меня есть права на запись и чтение для всех атрибутов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...