要解决此问题,您可以使用AWS SDK for JavaScript来实现发送用户电话号码验证短信消息。
首先,确保您已在AWS Cognito用户池设置中启用了电话号码验证。
然后,安装AWS SDK for JavaScript(如果尚未安装):
npm install aws-sdk
接下来,您可以使用以下代码示例来发送用户电话号码验证短信消息:
const AWS = require('aws-sdk');
AWS.config.update({ region: 'us-east-1' }); // 替换为您所在的区域
const cognitoIdentityServiceProvider = new AWS.CognitoIdentityServiceProvider();
const params = {
ClientId: 'YOUR_CLIENT_ID', // 替换为您的Cognito用户池应用程序客户端ID
Username: 'USER_USERNAME', // 替换为您要发送验证短信的用户的用户名
};
cognitoIdentityServiceProvider
.adminCreateUser({
UserPoolId: 'YOUR_USER_POOL_ID', // 替换为您的Cognito用户池ID
Username: 'USER_USERNAME', // 替换为您要发送验证短信的用户的用户名
MessageAction: 'SUPPRESS', // 阻止以前发送的验证短信
})
.promise()
.then(() => {
cognitoIdentityServiceProvider
.adminInitiateAuth({
UserPoolId: 'YOUR_USER_POOL_ID', // 替换为您的Cognito用户池ID
ClientId: 'YOUR_CLIENT_ID', // 替换为您的Cognito用户池应用程序客户端ID
AuthFlow: 'ADMIN_NO_SRP_AUTH',
AuthParameters: {
USERNAME: 'USER_USERNAME', // 替换为您要发送验证短信的用户的用户名
},
})
.promise()
.then((response) => {
const authenticationResult = response.AuthenticationResult;
cognitoIdentityServiceProvider
.adminRespondToAuthChallenge({
UserPoolId: 'YOUR_USER_POOL_ID', // 替换为您的Cognito用户池ID
ClientId: 'YOUR_CLIENT_ID', // 替换为您的Cognito用户池应用程序客户端ID
ChallengeName: 'CUSTOM_CHALLENGE',
ChallengeResponses: {
USERNAME: 'USER_USERNAME', // 替换为您要发送验证短信的用户的用户名
ANSWER: 'SNS_SMS_MFA_CODE', // 替换为您的自定义答案
},
Session: authenticationResult.Session,
})
.promise()
.then((response) => {
console.log('Verification SMS sent successfully:', response);
})
.catch((error) => {
console.error('Failed to send verification SMS:', error);
});
})
.catch((error) => {
console.error('Failed to initiate auth:', error);
});
})
.catch((error) => {
console.error('Failed to create user:', error);
});
请注意,您需要将以下值替换为适用于您的Cognito用户池的实际值:
region: 您所在的AWS区域。ClientId: 您的Cognito用户池应用程序客户端ID。Username: 要发送验证短信的用户的用户名。UserPoolId: 您的Cognito用户池ID。ANSWER: 您的自定义答案。请确保已在用户池设置中配置了相应的自定义答案。通过运行上述代码,您将能够使用AWS Cognito和SNS发送用户电话号码验证短信消息。