以编程方式创建 Cognito 用户池和应用程序客户端时,如果应用程序客户端对用户池的属性具有读/写访问权限,则必须明确授予该访问权限。我已经能够成功地为自定义属性执行此操作,但内置属性总是返回“创建客户端时指定的写入属性无效”或“创建客户端时指定的读取属性无效”的错误。
文档是......既庞大又难以找到。除了诸如“ReadAttributes 是可以读取的属性的字符串列表”之类的内容之外,我还没有看到这个示例或有关 CreateUserPoolClientRequest 类型的有用文档的实际位。
这是我正在使用的代码,它总是以错误消息结束并且无法创建应用程序客户端。_client 是一个 AmazonCognitoIdentityProviderClient 正确实例化和凭证并在 lambda 函数中运行。
var request = new CreateUserPoolClientRequest { UserPoolId = userPoolId, ClientName = $"{name}AppClient" };
var builtInAttributes = new List<string>()
{
"address","birthdate","email","family name","gender","given name","locale","middle name","name","nickname","phone number", "picture","preferred username","profile","zoneinfo","updated at","website"
};
var readAttributes = new List<string>();
var writeAttributes = new List<string>();
readAttributes.InsertRange(0,builtInAttributes);
writeAttributes.InsertRange(0, builtInAttributes);
var attributeConfig = ConfigurationHelper.GetListFromSection("UserPoolCustomAttributes");
foreach (var attribute in attributeConfig)
{
readAttributes.Add($"custom:{attribute.Key}");
writeAttributes.Add($"custom:{attribute.Key}");
}
request.ReadAttributes = readAttributes;
request.WriteAttributes = writeAttributes;
var result = await _client.CreateUserPoolClientAsync(request, CancellationToken.None);
任何帮助是极大的赞赏。