我正在使用AWS-Amplify(和Cognito)在iOS应用中处理一些SignUp / SignIn流程。
一切正常,但是后来我决定在注册时需要更多信息。 即:名字,名字,家庭名称。
这里是用来进行身份验证的函数:
func showSignIn() {
AWSAuthUIViewController
.presentViewController(with: self.navigationController!,
configuration: nil,
completionHandler: {
(provider: AWSSignInProvider, error: Error?) in
if error != nil {
print("Error occurred: \(String(describing: error))")
} else {
print("Identity provider: \(provider.identityProviderName)")
}
})
}
完成必要的操作(使用amplify-cli)之后,删除旧的用户池并创建一个新的用户池。我重新编译了我的iOS应用并启动了它。
可以,但是现在我要注册用户时,会收到以下消息:
消息内容不足为奇,因为现在我需要指定的字段。 但是问题是,我在用户界面中看不到用于输入这些新字段的空间。
我是否忘记做一些事情以便可以对UI进行足够的更新? 还是我想通过修改上面的功能来做一些事情(手动更新UI)?如果是,那么进行更改的方式是什么?
这是我进行放大的第一步,我很可能会犯一些基本错误。
答案 0 :(得分:1)
我仅将AWS Amplify与JavaScript一起使用,但是在JS中,您确实需要手动更新UI。
这是JS代码以及我必须手动调用的方式,也许有帮助。
handleSignUpPressed = async ({
emailAddress = '',
firstName = '',
lastName = '',
password = '',
phoneNumber = '',
wantsToImproveApp = true,
} = {}) => {
if (emailAddress && firstName && lastName && password && phoneNumber) {
try {
const res = await Auth.signUp({
username: emailAddress,
password,
attributes: {
email: emailAddress,
name: firstName,
family_name: lastName,
phone_number: phoneNumber,
},
});
console.log('success', res);
this.props.navigation.push('VerificationScreen', {
username: res.username,
});
} catch (err) {
console.log(err);
}
}
};
答案 1 :(得分:0)
您可以使用AWSMobileClient在幕后显示使用AWSAuthUIViewController的嵌入式Auth https://aws-amplify.github.io/docs/ios/authentication#user-attributes。
我没有看到使用SignInUIOptions自定义您的用例的方法。还有一个现有的RFC用于改善AWSMobileClient和嵌入式UI的可用性:https://github.com/aws-amplify/aws-sdk-ios/issues/1158
如果滚动自己的注册/登录流程,则可以将用户属性传递到AWSMobileClient.signUp
:https://aws-amplify.github.io/docs/ios/authentication#user-attributes