如何使用aws-android-sdk在用户池中获取自定义属性

时间:2016-12-13 10:06:15

标签: amazon-cognito

我可以使用aws-android-sdk连接到aws用户池。我可以获得标准属性,如电子邮件,给定名称等......但不可能获得自定义属性。 这是使用的函数:

GetDetailsHandler detailsHandler = new GetDetailsHandler() {
        @Override
        public void onSuccess(CognitoUserDetails cognitoUserDetails) {
            // Extract user details
        }

        @Override
        public void onFailure(Exception exception) {
        }
    };

5 个答案:

答案 0 :(得分:2)

您必须将自定义属性标记为可读。见下文: https://forums.aws.amazon.com/thread.jspa?threadID=248330

答案 1 :(得分:0)

答案 2 :(得分:0)

基本上,对于经过身份验证的用户(CognitoUser对象)上的Cognito,您可以调用检索(getUserAttributes)和更新属性(updateAttributes)的方法。请注意,如果您定义了自定义属性(例如preferred_name),则在使用时需要引用如下所示:

custom:preferred_name

答案 3 :(得分:0)

添加到@Sergey Kovalev

cognitoUserDetailsCognitoUserAttributesCognitoUserSettings

cognitoUserDetails.getAttributes(); // returns UserAttributes 
cognitoUserDetails.getSettings(); //returns UserSettings

您必须再次调用getAttributes()以获取Hash Mapped属性值。

要检索custom:preferred_name,请使用以下代码。

Map mDetails = cognitoUserDetails.getAttributes().getAttributes();
String name = mDetails.get("custom:preferred_name").toString();

检查AWS用户池控制台>池详细信息以明确属性名称。

Required attributes name, phone_number
Alias attributes preferred_username
Custom attributes custom:company, custom:location

我在Android中使用过它。

答案 4 :(得分:0)

在我删除用户池并在创建新池时创建属性之前,我在读取/写入自定义属性时遇到了麻烦(而不是像我对原始池所做的那样)。