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
:
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!