AWS Amplify で構築された反応アプリがあります。入門ガイドに従い、次のように App.js でプロジェクトを初期化しました。
import Amplify, { Auth } from 'aws-amplify';
import awsconfig from './aws-exports';
Amplify.configure(awsconfig);
NavbarComponent では、「aws-amplify」から Auth をインポートし、登録/ログイン ボタンに Auth.federatedSignIn を呼び出すだけの onClick ハンドラを用意しています。
<Menu.Item>
<Link to="/" onClick={ Auth.federatedSignIn }>Login/Register</Link>
</Menu.Item>
このボタンをクリックすると、次のエラーが表示されます。
Unhandled Rejection (TypeError): Cannot read property '_config' of undefined
次のコード スニペットと一緒に:
(anonymous function)
src/Auth.ts:1713
1710 | dispatchAuthEvent('cognitoHostedUI', currentUser, "A user " + currentUser.getUsername() + " has been signed in via Cognito Hosted UI");
1711 | if (isCustomStateIncluded) {
1712 | customState = state
> 1713 | .split('-')
| ^ 1714 | .splice(1)
1715 | .join('-');
1716 | dispatchAuthEvent('customOAuthState', customState, "State for user " + currentUser.getUsername());
「amplify status」の実行後に提供される Hosted UI Test リンクを使用すると、ログインは完全に機能します。ID プロバイダーの 1 つを使用してサインインすると、問題なくホームページにリダイレクトされます。この問題は、コードから Auth.federatedSignIn 関数を使用してサインインまたは登録しようとしたときにのみ発生します。
aws-exports.js ファイルが更新されていることを確認するために、増幅状態を再度プルダウンしようとしましたが、うまくいきませんでした。また、Amplify.configure() を使用して、インポートした aws-exports.js を Auth.federatedSignIn への呼び出しを行っている NavbarComponent に直接渡してみましたが、何も変わりませんでした。
これを理解するための助けは大歓迎です!
また、参考までに、私の aws-exports.js ファイルのサニタイズ バージョンを次に示します。
// WARNING: DO NOT EDIT. This file is automatically generated by AWS Amplify. It will be overwritten.
const awsmobile = {
"aws_project_region": "<region>",
"aws_content_delivery_bucket": "<app-name>",
"aws_content_delivery_bucket_region": "<region>",
"aws_content_delivery_url": "http://<base-url>.amazonaws.com",
"aws_appsync_graphqlEndpoint": "https://<base-url>.amazonaws.com/graphql",
"aws_appsync_region": "<region>",
"aws_appsync_authenticationType": "AMAZON_COGNITO_USER_POOLS",
"aws_cognito_identity_pool_id": "<cognito-identity-pool-id>",
"aws_cognito_region": "<region>",
"aws_user_pools_id": "<aws-user-pool-id>",
"aws_user_pools_web_client_id": "<aws-user-pools-web-client-id>",
"oauth": {
"domain": "<my-app-name>.auth.<region>.amazoncognito.com",
"scope": [
"phone",
"email",
"openid",
"profile",
"aws.cognito.signin.user.admin"
],
"redirectSignIn": "http://localhost:3000/",
"redirectSignOut": "http://localhost:3000/",
"responseType": "code"
},
"federationTarget": "COGNITO_USER_AND_IDENTITY_POOLS"
};
export default awsmobile;