问题很简单:我使用AWS Cognito和AWS Amplify为iOS应用添加了用户身份验证。我已成功实施登录和注册,但如何获取用户属性,如电子邮件,全名或电话号码?
您可以在最新的SDK版本2.8.x
中将getUserAttributes与以下API一起使用:
public func getUserAttributes(completionHandler: @escaping (([String: String]?, Error?) -> Void))
你可以在这里找到源代码:
谢谢,罗汉
根据documentation,有几个属性助手,用于常用属性,如用户名:
AWSMobileClient.getInstance().getUsername()
AWSMobileClient.getInstance().isSignedIn()
AWSMobileClient.getInstance().getIdentityId()
您还可以获取JWT令牌,然后提取任何用户属性:
AWSMobileClient.getInstance().getTokens().getIdToken().getTokenString()
如果您正在寻找具体的电子邮件地址,并且可能需要离线,这对您有用:
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()
很方便,但即使用户池设置为使用电子邮件作为用户名,它也会返回用户池用户的ID。我认为这是一个错误,但还没有向AWS报告。