gpt4 book ai didi

amazon-web-services - AWS Cognito : how to allow users to change email without verification?

转载 作者:行者123 更新时间:2023-12-03 19:44:29 27 4
gpt4 key购买 nike

我是 AWS 的新手,我正在寻找一种方法,允许我的 Android 应用程序的用户在不经过验证过程的情况下更改他们的电子邮件(我设法为订阅做到了这一点)。

我试着关注 thisthis ,这就是我所做的。

在我的 Android 应用中:

public void onClickChangeEmail(View view)
{
CognitoUserAttributes attributes = new CognitoUserAttributes();
attributes.getAttributes().put("email", "second@mail.com");
CognitoSettings
.getCognitoUserPool(MainActivity.this)
.getCurrentUser()
.updateAttributesInBackground(attributes, new UpdateAttributesHandler()
{
@Override
public void onSuccess(List<CognitoUserCodeDeliveryDetails> attributesVerificationList)
{
Log.i("tag", "Email updated!");
}

@Override
public void onFailure(Exception e)
{
e.printStackTrace();
}
});
}

然后,在我的 AWS 控制台中,我在 Cognito 中的自定义消息上添加了一个触发器,这是我的 lambda 函数,每次用户更新他的电子邮件时都会触发它:

const AWS = require('aws-sdk')
AWS.config.update({region: 'eu-central-1'});

exports.handler = (event, context, callback) => {
if (event.triggerSource === 'CustomMessage_UpdateUserAttribute')
{
const params = {
UserAttributes: [
{
Name: 'email_verified',
Value: 'true',
},
],
UserPoolId: event.userPoolId,
Username: event.userName,
};
var cognitoIdServiceProvider = new AWS.CognitoIdentityServiceProvider();
cognitoIdServiceProvider.adminUpdateUserAttributes(params, function(err, data) {
if (err) context.done(err, event); // an error occurred
else context.done(null, event); // successful response
});
}
else
{
context.done(null, event);
}
};

结果是:电子邮件已正确更新(但它在没有 lambda 的情况下工作),但 lambda 崩溃,并出现以下错误:
autoValidationUserEmailModification is not authorized to perform: cognito-idp:AdminUpdateUserAttributes
所以看起来缺少授权。

我的问题是:
  • 如何修复授权部分?
  • 这种方法是在更新用户电子邮件时禁用电子邮件验证的正确方法吗?

  • 谢谢你的帮助。

    最佳答案

    允许您的函数执行 AdminUpdateUserAttributes在您的 Cognito 池资源上。

    使用块更新 Lambda 执行规则,例如:

    {
    "Action": [
    "cognito-idp:AdminUpdateUserAttributes"
    ],
    "Resource": "arn:aws:cognito-idp:eu-central-1:<your-user-id>:userpool/<your-user-pool>",
    "Effect": "Allow"
    }

    哪里 Resource是您的 Cognito 用户池 ARN。

    关于amazon-web-services - AWS Cognito : how to allow users to change email without verification?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57025752/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com