SignUp with Custom Attributes throws errors
See original GitHub issueDescribe the bug I have created a Cognito User Pool and Identity Pool via Cloud Formation templates using the Serverless Framework. The schema looks like this:
Schema:
- Name: family_name
AttributeDataType: String
Mutable: true
Required: true
- Name: given_name
AttributeDataType: String
Mutable: true
Required: true
- Name: confirmed_email
AttributeDataType: Boolean
Mutable: true
Required: false
Signup was working fine until I added the confirmed_email attribute and added it to signup. This results in a SerializationException being raised. The only way I can create the user with the custom attribute is to append custom
to the key so that confirmed_email
becomes custom:confirmed_email
and the boolean will only work as a string.
To Reproduce
- Use above schema to add attributes to a Cognito User Pool. Then attempt to sign up a user with the following:
Auth.signUp({
username: email,
password: password,
attributes: {
given_name: given_name,
family_name: family_name,
confirmed_email: false
},
})
- This will result in the following error:
{code: "SerializationException", name: "SerializationException", message: "class java.lang.Boolean can not be converted to an String"}
- Now sign up a user with this code:
Auth.signUp({
username: email,
password: password,
attributes: {
given_name: given_name,
family_name: family_name,
'custom: confirmed_email': 'false'
},
})
You should not observe the error and the user should be created successfully.
Expected behavior
I expect Auth.signUp()
to accept custom attributes as a regular javascript object as shown here: https://aws.amazon.com/blogs/mobile/aws-amplify-adds-support-for-custom-attributes-in-amazon-cognito-user-pools/
Issue Analytics
- State:
- Created 4 years ago
- Reactions:2
- Comments:6 (1 by maintainers)
Top GitHub Comments
So what if we add a
Boolean
custom attribute to our cloudformation schema then realise that onlyString
andNumber
are supported?We can’t delete the attribute. We can’t modify the attribute.
I want to convert this into a string or remove it. It’s broken my authentication flow and there doesn’t appear to be a solution to fix this. Am I supposed to delete my amplify backend infrastructure and then amplify push from new?
This is a little nutty if that is the only solution.
I ran into the same issue (SerializationException), although my value is defined as a Number in the Cognito console, but I had to wrap it in quotes within my app. This is confusing and it the error message is somewhat helpful in retrospect, but not at all intuitive.
My custom attribute is called
onboarding
with a type of Number. The Cognito console renamed it tocustom:onboarding
.In my sign up method, I add:
attributes: { 'custom:onboarding': '0' }