我可以使用aws-android-sdk连接到aws用户池。我可以获得标准属性,如电子邮件,给定名称等......但不可能获得自定义属性。 这是使用的函数:
GetDetailsHandler detailsHandler = new GetDetailsHandler() {
@Override
public void onSuccess(CognitoUserDetails cognitoUserDetails) {
// Extract user details
}
@Override
public void onFailure(Exception exception) {
}
};
答案 0 :(得分:2)
您必须将自定义属性标记为可读。见下文: https://forums.aws.amazon.com/thread.jspa?threadID=248330
答案 1 :(得分:0)
您应该使用getAttributes()
类的CognitoUserAttributes
来获取用户属性。
和源代码
答案 2 :(得分:0)
基本上,对于经过身份验证的用户(CognitoUser对象)上的Cognito,您可以调用检索(getUserAttributes)和更新属性(updateAttributes)的方法。请注意,如果您定义了自定义属性(例如preferred_name),则在使用时需要引用如下所示:
custom:preferred_name
答案 3 :(得分:0)
添加到@Sergey Kovalev
cognitoUserDetails
有CognitoUserAttributes
和CognitoUserSettings
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)
在我删除用户池并在创建新池时创建属性之前,我在读取/写入自定义属性时遇到了麻烦(而不是像我对原始池所做的那样)。