Как получить определенный атрибут из пулов пользователей 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()[...]
Другие вопросы по тегам