【发布时间】:2016-10-29 20:52:00
【问题描述】:
我正在尝试使用 Amazon Cognito 和 Twitter Digits 对用户进行身份验证。当我创建用户时,会创建一个与 Digits 登录没有任何连接的未经身份验证的用户。
这是我的代码:
override func viewDidLoad() {
super.viewDidLoad()
let credentialsProvider = AWSCognitoCredentialsProvider(regionType:.USEast1, identityPoolId:"us-east-1:1b21eda6-56e8-4094-a7af-XXXXXXXXXXXX")
let configuration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: credentialsProvider)
AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration
let authButton = DGTAuthenticateButton(authenticationCompletion: { (session: DGTSession?, error: NSError?) in
if (session != nil) {
let value = (session!.authToken)! + ";" + (session!.authTokenSecret)!
credentialsProvider.logins = ["www.digits.com" : value]
credentialsProvider.getIdentityId().continueWithBlock({ (task) -> AnyObject? in
print(task.result)
print(task.error)
return nil
})
self.saveNumber((session?.phoneNumber)!)
} else {
print("Authentication error: \(error!.localizedDescription)")
}
})
authButton.center = self.view.center
self.view.addSubview(authButton)
}
还有saveNumber的代码:
func saveNumber(number : String) {
let syncClient = AWSCognito.defaultCognito()
let dataset = syncClient.openOrCreateDataset("userInfo")
dataset.setString(number, forKey: "phoneNumber")
dataset.synchronize().continueWithBlock { (task) -> AnyObject? in
if task.error != nil {
print("Uh Oh")
print(task.error?.localizedDescription)
}else{
print("Yay!")
}
return nil
}
}
有什么想法吗?谢谢!
【问题讨论】:
-
您使用的是哪个 SDK 版本?您能否打开详细日志记录并确认登录映射在调用 GetCredentialsForIdentity 时已发送到服务? docs.aws.amazon.com/mobile/sdkforios/developerguide/… 有可能您在获取凭据后将登录名与 credentialsProvider 相关联,因此身份未经身份验证。
-
@behrooziAWS 我使用的是 2.4.0 版。我在日志中看到的关于 credentialsProvider 的唯一内容是:
2016-06-27 18:12:23.354[23815:2089794] AWSiOSSDK v2.4.0 [Warn] AWSCognitoIdentityService.m line:173 | __48+[AWSCognitoIdentity internalInitializeIfNeeded]_block_invoke | Could not find valid 'AWSDefaultRegionType', 'AWSCognitoRegionType', and 'AWSCognitoIdentityPoolId' values in info.plist. Unable to set the default Cognito credentials provider and service configuration. Please follow the instructions on this website...
标签: ios swift amazon-cognito twitter-digits