Как получить пользовательские атрибуты AWS Cognito, используя AWSMobileClient в iOS? - PullRequest
0 голосов
/ 06 декабря 2018

Вопрос очень прост: я добавил аутентификацию пользователей в приложение iOS, используя AWS Cognito и AWS Amplify.Я успешно выполнил вход и регистрацию, но как получить атрибуты пользователя, такие как адрес электронной почты, полное имя или номер телефона?

Ответы [ 3 ]

0 голосов
/ 15 декабря 2018

Вы можете использовать getUserAttributes со следующим API в последней версии SDK 2.8.x:

public func getUserAttributes(completionHandler: @escaping (([String: String]?, Error?) -> Void))

Вы можете найти исходный код здесь:

https://github.com/aws-amplify/aws-sdk-ios/blob/master/AWSAuthSDK/Sources/AWSMobileClient/AWSMobileClientExtensions.swift#L532

Спасибо, Рохан

0 голосов
/ 05 марта 2019

Если вы ищете адрес электронной почты конкретно, и вам нужно сделать это потенциально в автономном режиме, это будет работать для вас:

AWSMobileClient.sharedInstance().getTokens { (tokens, error) in
    if let error = error { print(error.localizedDescription) }
    if let tokens = tokens {
        let email = tokens.idToken?.claims?["email"] as? String
        //completionHandler(email)... etc.
    }

Хотя AWSMobileClient.sharedInstance().getUsername() будет удобно, он вернетидентификатор пользователя пула пользователей, даже если в пуле пользователей установлено использование электронной почты в качестве имени пользователя.Я считаю это ошибкой, но пока не сообщаю об этом в AWS.

0 голосов
/ 08 декабря 2018

В документации есть несколько помощников свойств для общих атрибутов, таких как имя пользователя:

AWSMobileClient.getInstance().getUsername()
AWSMobileClient.getInstance().isSignedIn()
AWSMobileClient.getInstance().getIdentityId()

Вы также можете получить токен JWT и затем извлечь любые атрибуты пользователя:

AWSMobileClient.getInstance().getTokens().getIdToken().getTokenString()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...