如何让用户在MacOS平台快速实现登录、注册或关联帐号功能呢?在应用中集成认证服务SDK可实现这个功能。实现步骤不妨看看这篇帖子吧!关于集成步骤,官网的资料写的有点多,我总结一下步骤:
在AppGallery Connect页面点击"我的项目",在项目列表中找到需要开通认证服务的项目,单击"构建 > 认证服务",进入认证服务的页面。如果首次使用认证服务,请点击“立即开通”开通服务。
针对Xcode开发环境,您可以通过Cocoapods集成方式将认证SDK集成到您的Xcode开发环境中。
1、在Xcode项目中添加当前应用的AppGallery Connect配置文件。
2、创建Podfile文件。
打开命令行窗口,导航至Xcode项目所在的位置,创建Podfile文件。如果已经存在,可跳过本步骤。
- cd project-directory
- pod init
3、编辑Podfile文件。
1)集成 认证 SDK
编辑Podfile文件,增加pod依赖pod ‘'AGConnectAuth'。
- target 'AGConnectAuthDemo' do
- pod 'AGConnectAuth'
- end
2)执行 pod install,然后打开.xcworkspace文件查看该项目。
pod install
本次Codelab中您可以在Xcode工程中创建一个布局页面,参照下图进行UI设计,通过手机号或邮箱地址进行注册登录。
1、登录AppGallery Connect网站,点击“我的项目”。
2、在项目列表中找到您的项目,在项目下的应用列表中选择您的应用。
3、在“构建”栏下找到“ 认证服务”,在"认证方式"页签下“操作”一栏里,点击启用手机号码、邮箱地址。
1、发送验证码。
使用的未注册过的手机号/邮箱,您需要先发送验证码到手机号/邮箱,来验证是否本人注册。输入手机号码/邮箱,点击“sendverifyCode”按钮,代码会执行到请求手机验证码的方法(sendVertifyCode),在返回中可以看到发送的验证码。
- @objc func sendVertifyCode() {
-
- account = accountText.stringValue
-
- let setting = AGCVerifyCodeSettings.init(action: .registerLogin, locale: Locale.init(identifier: "zh_CN"), sendInterval: 30)
-
- switch comboBox.indexOfSelectedItem {
- case 0:
-
- AGCPhoneAuthProvider.requestVerifyCode(withCountryCode: "86", phoneNumber: account, settings: setting).onSuccess { (result) in
- print("send verification code success")
- }.onFailure { (error) in
- print("send verification code failed : " + error.localizedDescription)
- }
-
- break
-
- case 1:
-
- AGCEmailAuthProvider.requestVerifyCode(withEmail: account, settings: setting).onSuccess { (result) in
- print("send verification code success")
- }.onFailure { (error) in
- print("send verification code failed : " + error.localizedDescription)
- }
- break
-
- default: break
-
- }
-
- }
2、注册帐号。
手机/邮箱收到验证码后,输入验证码和您要设置的密码,在页面上点击“register”按钮,执行手机号注册的方法,注册结果您可以返回中看到。
- @objc func actionRegister() {
-
- account = accountText.stringValue
- password = passwordText.stringValue
- vertifyCode = vertifyCodeText.stringValue
-
- switch comboBox.indexOfSelectedItem {
- case 0:
-
- AGCAuth.instance().createUser(withCountryCode: "86", phoneNumber: account, password: password, verifyCode: vertifyCode).onSuccess { (result) in
- print("phone register success")
- }.onFailure { (error) in
- print("phone register failed")
- }
-
- break
-
- case 1:
-
- AGCAuth.instance().createUser(withEmail: account, password: password, verifyCode: vertifyCode).onSuccess { (result) in
- print("email register success")
- }.onFailure { (error) in
- print("email register failed")
- }
-
- break
-
- default: break
-
- }
- }
3、登录帐号。
注册成功后,输入您的手机号和设置的密码,点击“login”按钮进行登录,这样您就完成了使用AGConnectAuth进行手机号注册、登录的功能开发。
- @objc func actionLogin() {
-
- account = accountText.stringValue
- password = passwordText.stringValue
-
- switch comboBox.indexOfSelectedItem {
- case 0:
-
- let credential = AGCPhoneAuthProvider.credential(withCountryCode: "86", phoneNumber:account, password: password)
- AGCAuth.instance().signIn(credential: credential).onSuccess { (result) in
- print("phone login success")
- }.onFailure { (error) in
- print("phone login failed")
- }
-
- break
-
- case 1:
-
- let credential = AGCEmailAuthProvider.credential(withEmail: account, password: password)
- AGCAuth.instance().signIn(credential: credential).onSuccess { (result) in
- print("email login success")
- }.onFailure { (error) in
- print("email login failed")
- }
-
- break
-
- default: break
-
- }
-
- }
4、关联帐号。
认证服务可实现关联帐号的功能。注册帐号成功后,您可以将新注册的帐号关联至您的现有用户帐号(Facebook、微信等帐号),输入现有帐号,点击“sendverifyCode”按钮发送验证码,输入验证码后点击“link”按钮,帐号即可关联成功,用户可使用多种身份验证方式登录您的应用。
- @objc func actionLink() {
-
- account = accountText.stringValue
- password = passwordText.stringValue
- vertifyCode = vertifyCodeText.stringValue
-
- let credential = AGCPhoneAuthProvider.credential(withCountryCode: "86", phoneNumber: account, password: nil, verifyCode: vertifyCode)
-
- AGCAuth.instance().currentUser?.link(credential).onSuccess(callback: { (result) in
- print("link phone success")
- }).onFailure(callback: { (error) in
- print("link phone failed")
- })
- }
5、取消关联关系。
认证服务可实现取消帐号的关联关系的功能,以便用户不再使用该身份验证提供方进行登录。选择要取消关联关系的帐号类型,点击“unlink”按钮,帐号的关联关系取消成功。
- @objc func actionUnlink() {
-
- AGCAuth.instance().currentUser?.unlink(.phone).onSuccess(callback: { (result) in
- print("link phone success")
- }).onFailure(callback: { (error) in
- print("link phone failed")
- })
- }
6、退出登录。
调用signOut方法可实现退出登录的功能。
- @IBAction func actionLogout(_ sender: Any) {
-
- AGCAuth.instance().signOut()
- }
1、在Xcode上点击运行按钮,在手机或模拟器上运行应用。输入手机号码,点击“发送验证码”按钮,待手机收到验证码,输入验证码和您要设置的密码,点击“register”,打断点查看是否注册成功,注册成功后,在云侧可以查看到用户信息。如需验证登录功能,您需先退出登录,再点击“login”。
2、点击“logout”按钮退出登录。输入邮箱帐号,点击“发送验证码”按钮,输入验证码和您设置的密码,点击“register”,注册成功后,再云侧可以查看到用户。如需验证登录功能,您需先退出登录,再点击“login”。
3、我们在云侧将已注册的手机号删除,然后在登录邮箱帐号的情况下,关联手机号。输入验证码后,即可关联成功。
认证服务集成简单,SDK依赖体积小,可以方便集成注册登录功能,节约工作量。
参考华为AGC认证服务开发文档:
欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh