3

我一直在开发一个使用 AWS Mobile Hub 作为后端的 iOS 应用程序,但我似乎不知道如何为用户登录功能实现自定义身份验证 UI。更好的是,我找不到任何文档至少可以暗示我应该如何做。我发现的唯一一点资源是 AWS 提供的 Auth UI 功能,这在我的情况下并不理想。(我应该提一下,我对 swift 上的 AWS 开发有点陌生)

我的想法是,当您在 Mobile Hub 上启动新项目时,我可以使用提供awsconfiguration.json给您的内容,然后将其集成到 UIViewController 类中以用于身份验证,而无需使用 AuthUI 库。

这是我尝试过的:

@IBOutlet weak var emailField: UITextField!
@IBOutlet weak var passwordField: UITextField!

var passwordAuthenticationCompletion: AWSTaskCompletionSource<AWSCognitoIdentityPasswordAuthenticationDetails>!

func getDetails(_ authenticationInput: AWSCognitoIdentityPasswordAuthenticationInput, passwordAuthenticationCompletionSource: AWSTaskCompletionSource<AWSCognitoIdentityPasswordAuthenticationDetails>) {
    passwordAuthenticationCompletion = passwordAuthenticationCompletionSource
}

@IBAction func logInTapped(_ sender: Any) {
    var emailText = emailField.text!
    var passwordText = passwordField.text!

    passwordAuthenticationCompletion.set(result: AWSCognitoIdentityPasswordAuthenticationDetails.init(username: emailText, password: passwordText))
}

func didCompleteStepWithError(_ error: Error?) {
    if error != nil {
        let alertController = UIAlertController(title: error?.localizedDescription, message: "error", preferredStyle: UIAlertControllerStyle.alert)
        alertController.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.default, handler: nil))

        self.present(alertController, animated: true, completion: nil)
    } else {
        print("logged in")
    }
}

passwordAuthenticationCompletion.set()当被调用时,我返回 nil 。有人可以告诉我我做错了什么,或者可能指出我正确的方向吗?

谢谢。

4

1 回答 1

1

发现了。
访问附加到移动集线器的默认认知用户池的方法是导入AWSUserPoolsSignIn库,然后使用AWSCognitoUserPoolsSignInProvider.sharedInstance().

于 2018-04-26T00:12:44.560 回答