Docs should mention that when creating the Cognito user pool that you should uncheck the check box for generating a client secret when used with a web app. Might also mention that you can have multiple apps connected to a single pool, so the web app has the secret turned off and the mobile app has it turned on.
Another item for docs. The authorized applications on your User Pool have to be duplicated onto the linked Federation Pool. I had only authorized my app on the User Pool and spent an hour figuring out that it was failing because the app has to be authorized in two places.
@jonsmirl thanks for the feedback. The Cognito docs have this within the Integrating User Pools for JavaScript Apps
I'm not clear on what you mean by the application duplicated onto the Federation Pool. Do you mean needing to add the User Pool to the Federated Identity Pool as a provider? If so, this is detailed within the Cognito docs as well here
We'll try and see if we can clarify this better within the docs here when manually creating resources and/or linking existing. Thanks for the feedback.
@jonsmirl - this is great, was completely stuck because I did not know secret needed to be unchecked.
FYI @mlabieniec - As you seem to be owning this repo (thank you!) and the mobile-cli, I though I'd share my (new) customer flow:
aws-exports
(note, as a customer I haven't used the mobile-cli before)?{identityPoolId, region, userPoolId, userPoolWebClientId}
userPoolId
is provided, userPoolWebClientId
becomes required.My suggestions to fix this customer flow:
Happy to provide more detail and help out.
PS: we're both part of Amazon, so hit me up via the Phonetool or Chime ;-)
@DanielApt we are working on overhauling the docs and this is on our list to update as well, thank you for this feedback though definitely helpful
As an additional note:
According to the manual setup mentioned by @DanielApt, the userPoolWebClientId should be in this format:
```
userPoolWebClientId: 'XX-XXXX-X_abcd1234', //OPTIONAL - Amazon Cognito Web Client ID
````
Which is not true (at least not for me), the prefix hinting at the region should NOT be there!
Yeah that thew me off as well. Mine is a 26 digits and characters string. No region.
The config object does not match any of the naming convention in the AWS Cognito console. I can't get passed this treasure hunt of finding all of these strings.
You can find all the creds
Amplify.configure({
Auth: {
identityPoolId: 'XX', (Federated Identities > Selected Identity Pool/Create new > Sample code > Select Javascript > Get AWS Credentials)
region: 'us-east-1', (User pools > General Settings > Pool Id) The first part of the Pool Id us-east-1
userPoolId: 'us-east-1_XXXXXX', (User pools > General Settings > Pool Id)
userPoolWebClientId: 'XXXXXXXXX', (User pools > General Settings > App clients > App client id)
},
});
userPoolWebClientId: Make sure you don’t have a secret key in the input field
edit: I realize you can find this information if you add your App client id to the Federated Identities. You need to click on edit identity pool
Small note, the main docs are still not updated Angular quick start. userPoolWebClient
still has a different format.
The more detailed Authentication page has the correct format though.
What should I use for the app client which is going to be used for the mobile app? userPoolWebClientId
is for the Web app only I guess.
Most helpful comment
You can find all the creds
userPoolWebClientId: Make sure you don’t have a secret key in the input field
edit: I realize you can find this information if you add your App client id to the Federated Identities. You need to click on edit identity pool