我可以使用 aws-android-sdk 连接到 aws 用户池。我可以获取标准属性,例如电子邮件、名字等...但不可能获取自定义属性。 这是使用的功能:
GetDetailsHandler detailsHandler = new GetDetailsHandler() {
@Override
public void onSuccess(CognitoUserDetails cognitoUserDetails) {
// Extract user details
}
@Override
public void onFailure(Exception exception) {
}
};
添加到@Sergey Kovalev
cognitoUserDetails
有 CognitoUserAttributes
和 CognitoUserSettings
cognitoUserDetails.getAttributes(); // returns UserAttributes
cognitoUserDetails.getSettings(); //returns UserSettings
您必须再次调用 getAttributes() 才能获取哈希映射属性值。
要检索
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中使用过这个。
您必须将自定义属性标记为可读。见下文: https://forums.aws.amazon.com/thread.jspa?threadID=248330
您应该使用
getAttributes()
类的 CognitoUserAttributes
来获取用户属性。
和源代码
基本上,在经过身份验证的用户(CognitoUser 对象)上使用 Cognito,您可以调用检索 (getUserAttributes) 和更新属性 (updateAttributes) 的方法。请注意,如果您定义了自定义属性(例如 Preferred_name),则在使用它时需要引用如下内容:
custom:preferred_name
我在读取/写入自定义属性时遇到了麻烦,直到我删除了用户池并在创建新池时创建了属性(而不是像我对原始池所做的那样)。
我必须在应用程序客户端注册>属性读写权限下启用我的自定义属性