Swift 注册期间无法获取用户的UUID(sub):Amazon Cognito
我正在尝试使用AWS Cognito注册用户 我从中显示的注册方法中了解到,注册方法的回调返回Swift 注册期间无法获取用户的UUID(sub):Amazon Cognito,swift,amazon-web-services,aws-cognito,Swift,Amazon Web Services,Aws Cognito,我正在尝试使用AWS Cognito注册用户 我从中显示的注册方法中了解到,注册方法的回调返回err和data,数据参数应具有usersub或UUID(例如UUID:671FF45-77aa-4867-b11f-47c8bfa246a9)。 我无法调用方法(data.UserSub)来检索它,swift抛出了一个错误 “AWSCognitoIdentityUserPoolSignUpResponse”类型的值没有成员 “UserSub” 请参阅SignUp()中的第三条打印语句以了解完整的上下文
err和data
,数据参数应具有usersub或UUID(例如UUID:671FF45-77aa-4867-b11f-47c8bfa246a9)。
我无法调用方法(data.UserSub)来检索它,swift抛出了一个错误
“AWSCognitoIdentityUserPoolSignUpResponse”类型的值没有成员
“UserSub”
请参阅SignUp()
中的第三条打印语句以了解完整的上下文
class Login: UIViewController{
var pool: AWSCognitoIdentityUserPool?
override func viewDidLoad() {
super.viewDidLoad()
let AWSCognitoUserPoolsSignInProviderKey = "UserPool"
self.pool = AWSCognitoIdentityUserPool.init(forKey: AWSCognitoUserPoolsSignInProviderKey)
signUp()
}
}
func signUp(){
let userNameValue = "+" + UserData.mobileNumberWithCountryCode
print("userNameValue: \(userNameValue)")
let passwordValue = "somePassword"
var attributes = [AWSCognitoIdentityUserAttributeType]()
self.pool?.signUp(userNameValue, password: passwordValue, userAttributes: attributes, validationData: nil).continueWith {[weak self] (task) -> Any? in
guard let strongSelf = self else {
print("Returninig nil on Strong Self")
return nil
}
DispatchQueue.main.async(execute: {
if let error = task.error as? NSError {
print("There is an error")
}else if let result = task.result {
// The above line prints userName
print("userName after sub:\(result.user.username)")
//the below line throws a swift error: Value of type 'AWSCognitoIdentityUserPoolSignUpResponse' has no member 'UserSub'
print("userName after sub:\(result.UserSub)")
}
}
}
您正在使用哪个版本的SDK?如果您使用的是最新版本,可能只是大小写有误,那么应该是
.userSub
请参阅:以下是我正在使用的iOS SDK版本:
pod'AWSCore',“~>2.5.0”
pod'AWSCognitoIdentityProvider',“~>2.5.0”
当用户登录时,我如何获得userSub
。最简单的方法是在用户对象上调用getDetails
方法。当我在SignIn方法中的getDetails()
之前打印self.user
时,我会获得Optional()
,在登录期间,下面的代码不会通过,你能建议我如何在self.response=task.result打印(“self.response:\(self.response)”)中获取userSub?self.user?.getDetails().continueOnSuccessWith{(task)->AnyObject?返回nil}
self.user?.getDetails().continueOnSuccessWith{(task)->AnyObject?in for属性in(task.result?.userAttributes)!{if(attribute.name==“sub”){print(“userSub:(attribute.value!)”)}返回self;}