はじめに
こんばんは。
最近 cognitoを使って、認証等を勉強中です。
そんな中で流れでsignupして code認証する流れをphpで作ってたので、備忘録で残しておきます。
本題
登録
$client = new CognitoIdentityProviderClient([ 'version' => env('AWS_COGNITO_VERSION'), 'region' => env('AWS_DEFAULT_REGION'), 'credentials' => [ 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), ] ]); $result = $client->signUp([ 'ClientId' => env('AWS_COGNITO_APP_CLIENT_ID'), 'Username' => $email, 'Password' => $password, 'UserAttributes' => [ ['Name' => 'email', 'Value' => $email], ['Name' => 'phone_number', 'Value' => "+81{$phoneNumber}"], ] ]);
SMS認証
$client = new CognitoIdentityProviderClient([ 'version' => env('AWS_COGNITO_VERSION'), 'region' => env('AWS_DEFAULT_REGION'), 'credentials' => [ 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), ] ]); $result = $client->confirmSignUp([ 'ClientId' => env('AWS_COGNITO_APP_CLIENT_ID'), 'Username' => $username, 'ConfirmationCode' => $code, ]);
これでcognito側も問題なく登録できます。
ただ、SMS認証だから emailの属性だけは 未検証
のまま
signup時に email_verified
をtrueにして登録しようとするとエラーが出るので、これはこのままになってしまうのかな...?
終わりに
コード認証は似たような名前のAPIがあるから悩みましたが、なんとかできてよかったです。
現場からは以上です。