AWS Cognito NotAuthorizedException客户端尝试写入未经授权的属性

gkh*_*cer 6 amazon-web-services aws-sdk aws-cognito

我正在为我的应用程序使用AWS Cognitoaws-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);
Run Code Online (Sandbox Code Playgroud)

在我使用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);
Run Code Online (Sandbox Code Playgroud)

问题是什么?我该如何解决?

doo*_*uck 8

在AWS网站上,转到您的用户池 - >应用程序 - >显示详细信息 - >设置属性读写权限.确保您尝试在可写属性列表中编写的每个属性都有一个复选标记.

  • 感谢您的回复。我应用了,但是问题依然存在。 (2认同)

gkh*_*cer 0

我的天啊!异常原因只是书写错误。通过更正这一行中从 family 到 family 的键入错误来解决该问题:

family_name.WithName("familiy_name").WithValue("xxx");
Run Code Online (Sandbox Code Playgroud)