集成华为AGC认证服务实用教程-MacOS

如何让用户在MacOS平台快速实现登录注册或关联帐号功能呢?在应用中集成认证服务SDK实现这个功能。实现步骤不妨看看这篇帖子吧!关于集成步骤,官网的资料写的有点多,我总结一下步骤:

  1. 开通华为认证服务
  2. MacOS项目中集成SDK
  3. 界面设计
  4. 开启认证方式
  5. 功能开发
  6. 打包测试

1、开通华为认证服务

AppGallery Connect页面点击"我的项目",在项目列表中找到需要开通认证服务的项目,单击"构建 > 认证服务"进入认证服务的页面。如果首次使用认证服务,请点击“立即开通”开通服务。

1.png

2、集成SDK

针对Xcode开发环境,您可以通过Cocoapods集成方式将认证SDK集成到您的Xcode开发环境中。

1、在Xcode项目中添加当前应用的AppGallery Connect配置文件。

  1. 登录AppGallery Connect网站,点击我的项目
  2. 在项目列表中找到您的项目,在项目下的应用列表中选择您需要集成SDK的应用。
  3. 点击“项目设置”中“应用”栏下的“agconnect-services.plist”下载配置文件。
  4. 将“agconnect-services.plist”文件拷贝到应用级根目录下。

2.png

2、创建Podfile文件。

打开命令行窗口,导航至Xcode项目所在的位置,创建Podfile文件。如果已经存在,可跳过本步骤。

cd project-directory 
pod init

3、编辑Podfile文件。

1)集成 认证 SDK

编辑Podfile文件,增加pod依赖pod ‘'AGConnectAuth'。

扫描二维码关注公众号,回复: 14362835 查看本文章
target 'AGConnectAuthDemo' do
pod 'AGConnectAuth'
end

2)执行 pod install,然后打开.xcworkspace文件查看该项目。

pod install

3、界面设计

本次Codelab中您可以在Xcode工程中创建一个布局页面,参照下图进行UI设计,通过手机号或邮箱地址进行注册登录

3.png

4、开启认证方式

1、登录AppGallery Connect网站,点击“我的项目”。

2、在项目列表中找到您的项目,在项目下的应用列表中选择您的应用。

3、在“构建”栏下找到“ 认证服务”,在"认证方式"页签下“操作”一栏里,点击启用手机号码、邮箱地址。

4.png

5、功能开发

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()
    }

6、打包测试

1、在Xcode上点击运行按钮,在手机或模拟器上运行应用。输入手机号码,点击“发送验证码”按钮,待手机收到验证码,输入验证码和您要设置的密码,点击“register”,打断点查看是否注册成功,注册成功后,在云侧可以查看到用户信息。如需验证登录功能,您需先退出登录,再点击“login”。

5.png

6.png

2、点击“logout”按钮退出登录。输入邮箱帐号,点击“发送验证码”按钮,输入验证码和您设置的密码,点击“register”,注册成功后,再云侧可以查看到用户。如需验证登录功能,您需先退出登录,再点击“login”。

7.png

8.png

3、我们在云侧将已注册的手机号删除,然后在登录邮箱帐号的情况下,关联手机号。输入验证码后,即可关联成功。

9.png

7、总结

认证服务集成简单,SDK依赖体积小,可以方便集成注册登录功能,节约工作量。

参考华为AGC认证服务开发文档:

https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-auth-introduction-0000001053732605

 

欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh

{{o.name}}
{{m.name}}

猜你喜欢

转载自my.oschina.net/u/4478396/blog/5549939