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


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

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

    1、开通华为认证服务

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

    2、集成SDK

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

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

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

    2、创建Podfile文件。

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

    1. cd project-directory
    2. pod init

    3、编辑Podfile文件。

    1)集成 认证 SDK

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

    1. target 'AGConnectAuthDemo' do
    2. pod 'AGConnectAuth'
    3. end

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

    pod install

    3、界面设计

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

    4、开启认证方式

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

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

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

    5、功能开发

    1、发送验证码。

         使用的未注册过的手机号/邮箱,您需要先发送验证码到手机号/邮箱,来验证是否本人注册。输入手机号码/邮箱,点击“sendverifyCode”按钮,代码会执行到请求手机验证码的方法(sendVertifyCode),在返回中可以看到发送的验证码。

    1. @objc func sendVertifyCode() {
    2. account = accountText.stringValue
    3. let setting = AGCVerifyCodeSettings.init(action: .registerLogin, locale: Locale.init(identifier: "zh_CN"), sendInterval: 30)
    4. switch comboBox.indexOfSelectedItem {
    5. case 0:
    6. AGCPhoneAuthProvider.requestVerifyCode(withCountryCode: "86", phoneNumber: account, settings: setting).onSuccess { (result) in
    7. print("send verification code success")
    8. }.onFailure { (error) in
    9. print("send verification code failed : " + error.localizedDescription)
    10. }
    11. break
    12. case 1:
    13. AGCEmailAuthProvider.requestVerifyCode(withEmail: account, settings: setting).onSuccess { (result) in
    14. print("send verification code success")
    15. }.onFailure { (error) in
    16. print("send verification code failed : " + error.localizedDescription)
    17. }
    18. break
    19. default: break
    20. }
    21. }

    2、注册帐号。

         手机/邮箱收到验证码后,输入验证码和您要设置的密码,在页面上点击“register”按钮,执行手机号注册的方法,注册结果您可以返回中看到。

    1. @objc func actionRegister() {
    2. account = accountText.stringValue
    3. password = passwordText.stringValue
    4. vertifyCode = vertifyCodeText.stringValue
    5. switch comboBox.indexOfSelectedItem {
    6. case 0:
    7. AGCAuth.instance().createUser(withCountryCode: "86", phoneNumber: account, password: password, verifyCode: vertifyCode).onSuccess { (result) in
    8. print("phone register success")
    9. }.onFailure { (error) in
    10. print("phone register failed")
    11. }
    12. break
    13. case 1:
    14. AGCAuth.instance().createUser(withEmail: account, password: password, verifyCode: vertifyCode).onSuccess { (result) in
    15. print("email register success")
    16. }.onFailure { (error) in
    17. print("email register failed")
    18. }
    19. break
    20. default: break
    21. }
    22. }

    3、登录帐号。

          注册成功后,输入您的手机号和设置的密码,点击“login”按钮进行登录,这样您就完成了使用AGConnectAuth进行手机号注册、登录的功能开发。

    1. @objc func actionLogin() {
    2. account = accountText.stringValue
    3. password = passwordText.stringValue
    4. switch comboBox.indexOfSelectedItem {
    5. case 0:
    6. let credential = AGCPhoneAuthProvider.credential(withCountryCode: "86", phoneNumber:account, password: password)
    7. AGCAuth.instance().signIn(credential: credential).onSuccess { (result) in
    8. print("phone login success")
    9. }.onFailure { (error) in
    10. print("phone login failed")
    11. }
    12. break
    13. case 1:
    14. let credential = AGCEmailAuthProvider.credential(withEmail: account, password: password)
    15. AGCAuth.instance().signIn(credential: credential).onSuccess { (result) in
    16. print("email login success")
    17. }.onFailure { (error) in
    18. print("email login failed")
    19. }
    20. break
    21. default: break
    22. }
    23. }

    4、关联帐号。

    认证服务可实现关联帐号的功能。注册帐号成功后,您可以将新注册的帐号关联至您的现有用户帐号(Facebook、微信等帐号),输入现有帐号,点击“sendverifyCode”按钮发送验证码,输入验证码后点击“link”按钮,帐号即可关联成功,用户可使用多种身份验证方式登录您的应用。

    1. @objc func actionLink() {
    2. account = accountText.stringValue
    3. password = passwordText.stringValue
    4. vertifyCode = vertifyCodeText.stringValue
    5. let credential = AGCPhoneAuthProvider.credential(withCountryCode: "86", phoneNumber: account, password: nil, verifyCode: vertifyCode)
    6. AGCAuth.instance().currentUser?.link(credential).onSuccess(callback: { (result) in
    7. print("link phone success")
    8. }).onFailure(callback: { (error) in
    9. print("link phone failed")
    10. })
    11. }

    5、取消关联关系。

    认证服务可实现取消帐号的关联关系的功能,以便用户不再使用该身份验证提供方进行登录。选择要取消关联关系的帐号类型,点击“unlink”按钮,帐号的关联关系取消成功。

    1. @objc func actionUnlink() {
    2. AGCAuth.instance().currentUser?.unlink(.phone).onSuccess(callback: { (result) in
    3. print("link phone success")
    4. }).onFailure(callback: { (error) in
    5. print("link phone failed")
    6. })
    7. }

    6、退出登录。

    调用signOut方法可实现退出登录的功能。

    1. @IBAction func actionLogout(_ sender: Any) {
    2. AGCAuth.instance().signOut()
    3. }

    6、打包测试

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

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

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

    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

  • 相关阅读:
    ST-Link的LED指示灯说明
    第四范式冲刺IPO,难逃AI玩家通病?
    jmeter发送post请求后台接收不到请求参数
    netplan说明[整理篇]
    架构师总结了22条API设计的最佳实践
    【three.js】坐标辅助器和轨道控制器
    (Java实现) HDOJ 1051 Wooden Sticks 贪心算法
    强化学习总结2 动态规划
    基于PID算法下STM32控制的坡道行驶电动小车(含源码)
    ps显示msvcp140.dll丢失的解决方法,四个解决方法分享
  • 原文地址:https://blog.csdn.net/weixin_44708240/article/details/125634671