Я не могу получить учетные данные пользователя AWS Cognito (swiftUI) - PullRequest
1 голос
/ 22 февраля 2020

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

func getUsername() -> String? {
     if(self.isAuth) {
         return AWSMobileClient.default().username
     } else {
         return nil
     }
}

и

func getUserEmail() -> String {
     var returnValue = String()
     AWSMobileClient.default().getUserAttributes { (attributes, error) in
          if(error != nil){
             print("ERROR: \(String(describing: error))")
          }else{
             if let attributesDict = attributes{
                 //print(attributesDict["email"])
                 self.name = attributesDict["name"]!
                 returnValue = attributesDict["name"]!
             }
         }
    }
    print("return value: \(returnValue)")
    return returnValue
}

Кто-нибудь знает, почему это не работает?

1 Ответ

0 голосов
/ 02 марта 2020

После входа попробуйте это:

AWSMobileClient.default().getTokens { (tokens, error) in
                    if let error = error {
                        print("error \(error)")
                    } else if let tokens = tokens {

                        let claims = tokens.idToken?.claims
                        print("claims \(claims)")
                        print("email? \(claims?["email"] as? String ?? "No email")")
                    }
                }

Я попытался получить атрибуты пользователя, используя AWSMobileClient getUserAttributes, но безуспешно. Также попытался использовать AWSCognitoIdentityPool getDetails Безуспешно. Возможно, это ошибка AWS Мобильного клиента, но мы все равно можем получить атрибуты из токена идентификатора, как показано выше.

Если вы используете размещенный пользовательский интерфейс, не забудьте предоставить вашему размещенному пользовательскому интерфейсу правильные области, для пример:

 let hostedUIOptions = HostedUIOptions(scopes: ["openid", "email", "profile"], identityProvider: "Google")
...