0

I am sorry to do this, but I don't have enough reputation to comment on this issue: How to link my mobile hub with my existing cognito user pool?, and the answer provided didn't quite solve my problem.

To explain a little better, I am using the React Native build-out for AWS Mobile Hub. I have "successfully" authenticated, but Amplify keeps using the pre-configured (automatically integrated) User Pool. This requires the user to enter a phone number as part of the sign up process, but we don't have that field for sign up.

I have linked my Cognito User Pool to the pre-configured (automatically integrated) Identity Pool under "Authentication Providers" as @andrew-c suggested in the issue above. I edited the 'aws_user_pools_id' property to point to my custom User Pool, as suggested in the issue above.

When I console.log() the User Pool property, that I passed into my Amplify configuration, it gives me my custom User Pool.

When I console.log() the response from the Authentication success, I also see my custom User Pool. But the user keeps getting saved into, and authenticated against the model (namely, phone_number is required) of the pre-configured (automatically integrated) User Pool. I.e. that's where my users show up after sign-up.

Does anyone know what I'm missing?

Here's what I'm seeing in the console:

Custom User Pool

That's what I get when running this code:

  const attributes = {
    name: this.state.name,
    birthdate: this.state.birthdate,
    phone_number: '+011234567890',
  }
  try {
      console.log(Auth.signUp);
      this.setState({ loading: true });
      const response = await Auth.signUp({
        username: this.state.email,
        password: this.state.password,
        attributes,
        validationData: [],
      });
      console.log(`SignUp::onSignUp(): Response#1 = ${JSON.stringify(response, null, 2)}`);
      if (response.userConfirmed === false) {
          this.setState({ authData: response, modalShowing: true, loading: false });
      } else {
          this.onAuthStateChange('default', { username: response.username });
      }
  } catch (err) {
      console.log(`SignUp::onSignUp(): Error ${JSON.stringify(err, null, 2)}`);
      this.setState({ error: err.message, loading: false });
  }

And the relevant imports:

import Amplify, { Auth } from 'aws-amplify';
import aws_exports from '../../aws-exports';
Amplify.configure(aws_exports);

So suffice it to say I would really like to not require a phone number on sign up, and I figured this would be the easiest way, but if anyone knows what I'm missing or has a better path for me to go down, please let me know. Thanks folks!

ZebGir
  • 123
  • 1
  • 7
  • 1
    For anyone who finds this question in the future--the problem is in the initial AWS Mobile Hub "Email and Password" set up. Whenever you add authentication to your application using "Email and Password", if you select "Optional" or "Required" for Two-Factor Auth, it will automatically check the box for Phone Number == Required. Makes sense, because AWS Mobile Hub's 2-factor Auth is via SMS, I believe. So you must select "Disabled" for Two-Factor Auth in order to not require Phone Number. – ZebGir Mar 30 '18 at 00:31
  • You can always post a question. And then your own Answer. – Patrick Sep 10 '18 at 22:03

0 Answers0