
AWS
【AWS】Amazon Cognitoの確認コード用のフォームを作成する
作成日:2022年01月30日
更新日:2022年01月31日
前回は、Amazon Cognito を AWS Amplify を使わずに連携し、Emal とパスワードを登録しました。

【AWS】フロントエンドで送信したデータをAmazon Cognitoに登録する
今回は、Amazon Cognito から送られてきた確認コードを確認済みにします。
まずは、前回のコードをコピーします。
フォームを確認ように修正しましょう。
jsx
return (
  <div>
    <form onSubmit={(e) => handleSubmit(e)}>
      <label>
        確認: 
        <input
          type="text"
          id="verify"
          value={auth.verify}
          onChange={(e) => handleChange(e)}
        />
      </label>
      <div>
        <button type="submit">送信</button>
      </div>
    </form>
  </div>
);
また、状態管理をverifyにします。
jsx
const [auth, setAuth] = useState({ verify: null });
userDataを作成します。
今回テストなのでUsernameは、Email をそのまま入力していますが、ユーザー登録のページから受け渡すとスムーズです。
jsx
const userData = {
  Username: "n-nao@azukipan.com",
  Pool: userPool,
};
userPoolの名称を、cognitoUserにします。
jsx
const cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);
handleSubmit内のuserPoolをcognitoUserにし、verifyを使用するようにします。
jsx
const handleSubmit = (e) => {
  e.preventDefault();
  cognitoUser.confirmRegistration(auth.verify, true, function (err, result) {
    if (err) {
      console.log(err.message || JSON.stringify(err));
      return;
    }
    console.log("Success!");
  });
};
一通り完成したので、フォームで送信してみます。
ユーザー登録した際に届いた確認コードを入力します。

送信し、Console を確認すると、

Success!が出力されました。
Cognito サービスへアクセスし、ユーザー情報を確認してみると、

確認ステータスが『送信済み』になっていました。
全文は、以下の通りです。
jsx
import React, { useState } from "react";
import * as AmazonCognitoIdentity from "amazon-cognito-identity-js";
const Verify = () => {
  const [auth, setAuth] = useState({ verify: null });
  const poolData = {
    UserPoolId: "ap-northeast-1_4VI2zqE6M",
    ClientId: "5dr2lc2tr1f9j0045aa2jok6s8",
  };
  const userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);
  const userData = {
    Username: "n-nao@azukipan.com",
    Pool: userPool,
  };
  const cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);
  const handleChange = (e) => {
    const newAuth = { ...auth };
    newAuth[e.target.id] = e.target.value;
    setAuth(newAuth);
  };
  const handleSubmit = (e) => {
    e.preventDefault();
    cognitoUser.confirmRegistration(auth.verify, true, function (err, result) {
      if (err) {
        console.log(err.message || JSON.stringify(err));
        return;
      }
      console.log("Success!");
    });
  };
  return (
    <div>
      <form onSubmit={(e) => handleSubmit(e)}>
        <label>
          確認: 
          <input
            type="text"
            id="verify"
            value={auth.verify}
            onChange={(e) => handleChange(e)}
          />
        </label>
        <div>
          <button type="submit">送信</button>
        </div>
      </form>
    </div>
  );
};
export default Verify;
次回は、フォームで送信したユーザー情報を、Amazon Cognito でユーザー認証します。

【AWS】フォームで送信したユーザー情報を、Amazon Cognitoでユーザー認証する
お知らせ

私事ですが、Udemyで初心者を対象にしたReactの動画コースを作成しました。
Reactについて興味がありましたら、ぜひ下のリンクからアクセスしてください。
詳しくはこちら(Udemyの外部サイトへ遷移します)




