Как получить определенный атрибут из пулов пользователей AWS Cognito после пользователя? Вызов.getDetails
После успешного входа я хочу получить значение определенного атрибута. Возможно ли сделать это без перебора каждого атрибута? Я знаю, что не могу подписаться, но есть ли другой способ?
Поэтому в приведенном ниже примере я хочу указать значение электронной почты пользователя. В идеале хотелось бы сказать let email = userAttributes["email"]
но этот тип не позволяет подписку.
user?.getDetails().continueOnSuccessWith(block: { (task) -> Any? in
let userAttributes = task.result?.userAttributes
for attribute in userAttributes! {
print(attribute.name!)
print(attribute.value!)
}
return nil
})
0 ответов
Видя, что AWSCognitoIdentityProviderAttributeType
содержит как имя, так и значение, мы можем легко сопоставить эти данные, чтобы создать словарь, к которому можно получить доступ по значению ключа.
Добавьте это расширение куда-нибудь
extension Array where Element: AWSCognitoIdentityProviderAttributeType {
func dict() -> [String : String] {
var dict: [String : String] = [:]
self.forEach({ e in dict[e.name!] = e.value! })
return dict
}
}
затем используйте
task.result?.userAttributes.dict()[...]