我在AWS Cognito用户池的用户配置中添加了一些自定义属性。我的应用程序在objective-c中类似于示例项目CognitoYourUserPoolsSample。一切正常,我可以毫无问题地登录/注册。
但是,我不知道如何访问和设置我在用户池配置中添加的所有用户自定义属性。例如,我可以从响应对象AWSCognitoIdentityProviderGetUserResponse访问默认属性值。它们存储在_userAttributes属性中(例如电话,电子邮件等)。
我的问题是:
自定义属性存储在哪里?
在注册过程中设置它们的正确方法是什么?
当我尝试使用与默认属性相同的方法注册自定义属性时出现以下错误:
// add custom attributes
AWSCognitoIdentityUserAttributeType * subscriptionType = [AWSCognitoIdentityUserAttributeType new];
subscriptionType.name = @"subscriptionType";
subscriptionType.value = @"Premium";
[attributes addObject:subscriptionType];
responseObjectForResponse:originalRequest:currentRequest:data:error:] | Response body:
{"__type":"NotAuthorizedException","message":"A client attempted to write unauthorized attribute"}
谢谢!
答案 0 :(得分:1)
回答你的问题:
谢谢
答案 1 :(得分:0)
正如我在问题中发现的那样: Signup with custom attributes in Cognito user pools 要设置自定义属性的值,您必须为其设置写入权限。 打开Amazon Cognito控制台 - > YourPool - >常规设置 - >应用客户端 - >显示详细信息 - >设置属性读取和写入权限并激活自定义属性的复选框。
同样在代码属性名称中应包含前缀' custom:' 即subscriptionType.name = @" custom:subscriptionType&#34 ;;这些值显示在AWS控制台中。