这个问题通常出现在使用 Amplify 建立的联合登录流程中,例如使用 Google、Facebook 或 Amazon 等社交媒体账号进行登录。解决这个问题的方法是在应用的 Identity Pool 中添加正确的授权 Provider。
以下是一个示例代码:
import Amplify, { Auth } from 'aws-amplify';
Amplify.configure({
Auth: {
identityPoolId: 'YOUR_IDENTITY_POOL_ID',
region: 'YOUR_REGION',
userPoolId: 'YOUR_USER_POOL_ID',
userPoolWebClientId: 'YOUR_USER_POOL_WEB_CLIENT_ID',
oauth: {
domain: 'YOUR_AUTH0_DOMAIN',
scope: ['YOUR_AUTH0_SCOPE'],
redirectSignIn: 'YOUR_REDIRECT_SIGN_IN',
redirectSignOut: 'YOUR_REDIRECT_SIGN_OUT',
responseType: 'token',
},
},
});
Auth.federatedSignIn({ provider: 'google' })
.then((cred) => {
console.log('Federated sign in success', cred);
})
.catch((err) => {
console.log('Federated sign in failed', err);
});
在这个示例中,我们通过 Auth.federatedSignIn() API 调用来发起联合登录流程。我们指定了 provider 参数为 Google,这意味着我们需要在 Identity Pool 的授权 Provider 中添加 Google Provider。
您可以通过 AWS 控制台中的 IAM 服务来检查您的 Identity Pool 的授权 Provider,确保已正确地添加了 Google Provider。如果您仍然遇到问题,请参考 Amplify 文档中的联合登录部分。