By using AWS re:Post, you agree to the Terms of Use
/Mobile Hub/

Questions tagged with Mobile Hub

Sort by most recent
  • 1
  • 90 / page

Browse through the questions and answers listed below or filter and sort to narrow down your results.

Android Amplify Authentication with AWSMobileClient crashes at User Sign Up

I want to implement a simple signIn/SignUp Functionality in my android app using AWS Cognito and AWS Amplify Authentication. To make it more easy, I want to use the SignInUI from the AWSMobileClient class. The UI gets shown with the signIn screen. After selecting the "Sign Up as new user" option I get a signUp screen and I can sign up as a new user. After entering my email and password and clicking "sign up", the new user gets created in my cognito user pool in my AWS console. I also receive the registration code via email. So far so good, but the app crashes with this message: 2020-12-07 19:46:42.250 8018-8018/de.stuttgart.myAppName E/AndroidRuntime: FATAL EXCEPTION: main Process: de.stuttgart.myAppName , PID: 8018 java.lang.AbstractMethodError: abstract method "void com.amazonaws.mobileconnectors.cognitoidentityprovider.handlers.SignUpHandler.onSuccess(com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser, com.amazonaws.services.cognitoidentityprovider.model.SignUpResult)" at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUserPool$1$1.run(CognitoUserPool.java:424) at android.os.Handler.handleCallback(Handler.java:789) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6541) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) _The crash seems to happen in the signUpInBackground() -> onSuccess() method in the CognitoUserPool.java class, I think AWSMobileClient may doesn't know what to do after a successfull singUp. I would like it to show the signIn screen again, so that the signedUp User now can signIn. How do I do that?_ When I restart the app, the SignIn screen gets shown again and I can login with this user (after entering the registration code that was sent to my email) and I get redirected to my next Activity (SelectTopCategoryActivity.class) in my App and the user gets confirmed in AWS Cognito. **So this works fine.** **But why does it crash on SignUp?** I initailize the AWSMobileClient like this in my AuthenticationActivity's "onCreate" method: AWSMobileClient.getInstance().initialize(getApplicationContext(), new Callback<UserStateDetails>() { @Override public void onResult(UserStateDetails userStateDetails) { Log.i(TAG, userStateDetails.getUserState().toString()); switch (userStateDetails.getUserState()){ case SIGNED_IN: Log.d(TAG, "onResult: Login successful"); Intent i = new Intent(AuthenticationActivity.this, SelectTopCategoryActivity.class); AuthenticationActivity.this.startActivity(i); break; case SIGNED_OUT: showSignIn(); break; default: AWSMobileClient.getInstance().signOut(); showSignIn(); break; } } @Override public void onError(Exception e) { Log.d(TAG, "onError: error"); Log.e(TAG, e.toString()); } }); When the user is not logged in the showSignIn() gets called: private void showSignIn() { try { AWSMobileClient.getInstance().showSignIn(this, SignInUIOptions.builder().nextActivity(SelectTopCategoryActivity.class).build()); } catch (Exception e) { Log.d(TAG, "showSignIn: failed"); Log.e(TAG, e.toString()); } } my manifest: <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application android:name=".AmplifyAuthentication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <!-- <activity android:name=".SwipeActivity">--> <!-- <intent-filter>--> <!-- <action android:name="android.intent.action.MAIN" />--> <!-- <category android:name="android.intent.category.LAUNCHER" />--> <!-- </intent-filter>--> <!-- </activity>--> <activity android:name=".AuthenticationActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".RecipeActivity" /> <activity android:name=".SelectTopCategoryActivity" /> <activity android:name=".RecipeListActivity" /> <activity android:name=".CircleListActivity" /> <activity android:name=".SwipeActivity" /> </application> my build.gradle imports: dependencies { def retrofitVersion = "2.9.0" def lifecycle_version = "1.1.1" def cardview_version = "1.0.0" def recyclerView_version = "1.0.0" def glideVersion = "4.11.0" def supportVersion = "28.0.0" def aws_version = "2.13.+" implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.2' implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'com.google.android.material:material:1.2.1' // implementation 'com.android.support.constraint:constraint-layout:1.1.3' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' //retrofit implementation "com.squareup.retrofit2:retrofit:$retrofitVersion" // Retrofit gson converter implementation "com.squareup.retrofit2:converter-gson:$retrofitVersion" // ViewModel and LiveData implementation "android.arch.lifecycle:extensions:$lifecycle_version" // CardViews implementation "androidx.cardview:cardview:$cardview_version" // RecyclerView implementation "androidx.recyclerview:recyclerview:$recyclerView_version" //Design library implementation "com.android.support:design:$supportVersion" // Glide implementation 'com.github.bumptech.glide:glide:4.8.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0' // Circular ImageView implementation 'de.hdodenhof:circleimageview:3.1.0' // Google Tabs implementation "androidx.browser:browser:1.2.0" // SwipeCards implementation 'com.lorentzos.swipecards:library:1.0.9' // Amplify core dependency (for AWS Cognito) implementation 'com.amplifyframework:core:1.6.4' implementation 'com.amplifyframework:aws-auth-cognito:1.6.4' // AWS Dependencies implementation "com.amazonaws:aws-android-sdk-core:$aws_version" implementation "com.amazonaws:aws-android-sdk-auth-core:$aws_version" implementation("com.amazonaws:aws-android-sdk-auth-userpools:$aws_version@aar") { transitive = true } implementation("com.amazonaws:aws-android-sdk-auth-ui:$aws_version") { transitive = true } // Support for Java 8 features coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.10' implementation 'com.android.support:appcompat-v7:24.0.0' implementation 'com.android.support:design:24.2.1' // Mobile Client for initializing the SDK implementation ('com.amazonaws:aws-android-sdk-mobile-client:2.6.+@aar') { transitive = true; } // Cognito UserPools for SignIn implementation 'com.android.support:support-v4:24.+' implementation ('com.amazonaws:aws-android-sdk-auth-userpools:2.6.+@aar') { transitive = true; } // Sign in UI Library implementation 'com.android.support:appcompat-v7:24.+' implementation ('com.amazonaws:aws-android-sdk-auth-ui:2.6.+@aar') { transitive = true; } } **These are the settings of the cognito user pool, which is referenced in my amplifyconfiguration.json:** '>amplify update auth Please note that certain attributes may not be overwritten if you choose to use defaults settings. Using service: Cognito, provided by: awscloudformation What do you want to do? Walkthrough all the auth configurations Select the authentication/authorization services that you want to use: User Sign-Up & Sign-In only (Best used with a cloud API only) Do you want to add User Pool Groups? No Do you want to add an admin queries API? No Multifactor authentication (MFA) user login options: OFF Email based user registration/forgot password: Enabled (Requires per-user email entry at registration) Please specify an email verification subject: Your verification code Please specify an email verification message: Your verification code is {####} Do you want to override the default password policy for this User Pool? Yes Enter the minimum password length for this User Pool: 6 Select the password character requirements for your userpool: Specify the app's refresh token expiration period (in days): 30 Do you want to specify the user attributes this app can read and write? No Do you want to enable any of the following capabilities? Do you want to use an OAuth flow? No Warning! Your existing IdentityPool: syzl8795f11f_identitypool_8795f11f will be deleted upon the next “amplify push”! ? Do you want to configure Lambda Triggers for Cognito? No Successfully updated auth resource syzl8795f11f locally '>amplify push Edited by: Grg on Dec 7, 2020 11:16 AM Edited by: Grg on Dec 7, 2020 11:19 AM Edited by: Grg on Dec 7, 2020 11:29 AM Edited by: Grg on Dec 7, 2020 11:33 AM
1
answers
0
votes
46
views
asked 2 years ago
  • 1
  • 90 / page