我正在为我的应用程序使用 AWS Cognito 和 aws-cpp-sdk 。我定义了一个用户池和一个应用程序,然后我得到了app client id和app secret。 我可以创建用户池对象:
Aws::Client::ClientConfiguration clientConfig;
clientConfig.region =
Aws::Region::EU_CENTRAL_1; // "RegionEndpoint.EUCentral1";
clientConfig.scheme = Aws::Http::Scheme::HTTPS;
clientConfig.connectTimeoutMs = 30000;
clientConfig.requestTimeoutMs = 600000;
CognitoIdentityProviderClient client;
client = CognitoIdentityProviderClient(clientConfig);
DescribeUserPoolClientRequest describeUserPoolClientRequest;
describeUserPoolClientRequest.WithUserPoolId(POOL_ID)
.WithClientId(TEST_APP_CLIENT_ID);
DescribeUserPoolClientOutcome describeUserPoolClientOutcome =
client.DescribeUserPoolClient(describeUserPoolClientRequest);
使用 SignUpRequest 定义用户后,出现如下错误: NotAuthorizedException客户端尝试写入未经授权的属性
这是我的注册码:
SignUpRequest signUpRequest;
signUpRequest.SetClientId(describeUserPoolClientOutcome.GetResult()
.GetUserPoolClient()
.GetClientId());
signUpRequest.SetUsername("xxxxx");
signUpRequest.SetPassword("xxxxxx?");
AttributeType email, phone_number, gender, given_name, family_name, picture;
email.WithName("email").WithValue("gacer@ku.edu.tr");
phone_number.WithName("phone_number").WithValue("+xxxxx");
given_name.WithName("given_name").WithValue("xxx");
family_name.WithName("familiy_name").WithValue("xxx");
gender.WithName("gender").WithValue("MALE");
picture.WithName("picture").WithValue(
"http://xxxx");
signUpRequest.AddUserAttributes(email);
signUpRequest.AddUserAttributes(phone_number);
signUpRequest.AddUserAttributes(given_name);
signUpRequest.AddUserAttributes(family_name);
signUpRequest.AddUserAttributes(gender);
signUpRequest.AddUserAttributes(picture);
SignUpOutcome signUpOutcome = client.SignUp(signUpRequest);
有什么问题?我该如何解决?
答案 0 :(得分:8)
在AWS网站中,转到您的用户池 - >应用 - >显示详细信息 - >设置属性读写权限。确保您尝试在可写属性列表中编写的每个属性都有一个复选标记。
答案 1 :(得分:0)
OMG!异常的原因只是写错了。通过在此行更正从家庭到家庭的输入错误来解决问题:
family_name.WithName("familiy_name").WithValue("xxx");
答案 2 :(得分:0)
我有同样的问题,但是通过在其他属性中添加custom:可以解决。 在添加自定义属性时 您需要添加
custom:family_name