HarmonyOS——认证服务开发

打印 上一主题 下一主题

主题 954|帖子 954|积分 2862

AGC平台提供了与项目绑定认证服务,可以让开发者更加轻松的举行应用的用户登录认证干系功能举行开发,在笔者之前举行华为账号登岸认证的时间,需要层层递进,访问三个华为官方的接口,才气拿到用户的唯一身份标识,并且还无法获取到该用户在华为绑定的账户信息,只能在自己的背景将用户数据与从官方获取到的用户唯一标识举行绑定,非常贫苦,如果要开发第三方账户的绑定便更加贫苦,最近学习并使用了AGC平台的登录认证开发模块,与传统方式相比简单快捷,并且该服务可以留存用户的基本信息,获取简单。加之与华为的云存储模块与云数据库模块相结合,完全可以脱离传统背景完成应用的用户账户干系开发。
验证码的获取

通过手机号获取

  1.     //申请手机验证码
  2.     auth.requestVerifyCode({
  3.       action: VerifyCodeAction.REGISTER_LOGIN,
  4.       lang: 'zh_CN',
  5.       sendInterval: 60,
  6.       verifyCodeType: {
  7.         phoneNumber: this.phoneNumber,
  8.         countryCode: '86',
  9.         kind: 'phone'
  10.       }
  11.     }).then(verifyCodeResult => {
  12.       //验证码申请成功
  13.     }).catch((err: BusinessError) => {
  14.       //验证码申请失败
  15.     });
复制代码
整个接口只需要干系数据的精确提供,其他都比较简答,唯一值得注意的是,如果在登岸或者注册时没有精确调用VerifyCodeAction枚举类的REGISTER_LOGIN而是调用了RESET_PASSWORD偶然不会产生报错,但是接到的对象大概会是空对象,需要在这里注意。
通过邮箱获取

  1.     //申请邮箱验证码
  2.     auth.requestVerifyCode({
  3.       action: VerifyCodeAction.REGISTER_LOGIN,
  4.       lang: 'zh_CN',
  5.       sendInterval: 60,
  6.       verifyCodeType: {
  7.         email: this.Email,
  8.         kind: 'email'
  9.       }
  10.     }).then(verifyCodeResult => {
  11.       //验证码申请成功
  12.     }).catch((err: BusinessError) => {
  13.       //验证码申请失败
  14.     });
复制代码
可以看到,通过邮箱获取验证码的实现与通过手机获取验证码基本一致,只有部分参数的区别,不多展开先容。
手机号注册/登岸

用户注册

先从最底子的手机号登录讲起,本文只先容非第三方认证方式,现在大多数第三方登录接口照旧使用之前在安卓端使用的接口,没有专门做鸿蒙端的适配,稳定性不高,并且在快速迭代,暂不先容。
  1.     auth.createUser({
  2.       kind: 'phone',
  3.       countryCode: '86',
  4.       phoneNumber: this.phoneNumber,
  5.       password: this.password_1,
  6.       verifyCode: this.verCode
  7.     }).then(val => {
  8.       // 创建用户成功
  9.     }).catch((error: BusinessError) => {
  10.       //创建失败,产生错误
  11.       }
复制代码
可以看到,只需要调用auth包下的createUser接口,并填写相应参数即可举行用户注册,该函数是异步实现,可以在then中誊写创建用户成功后的干系业务逻辑,例如退出注册界面等。如果创建失败,也可以在catch中对干系错误举行分析。
可以看到,注册是需要提供密码和验证码的,可以通过上文先容过的方式举行验证码的获取。
这里补充一点,入过我们要使用TextInput获取用户输入的登录信息来传输给AGC平台举行验证,最好把密码输入框的范例设置为密码,如许可以在点击手机号输入框的时间自动叫醒鸿蒙体系自带的账户信息体系,能在用户后期登岸时淘汰重复输入账户密码的次数,进步用户体验。
用户登录

  1.     auth.signIn({
  2.       //验证码登录
  3.       credentialInfo: {
  4.         kind: 'phone',
  5.         phoneNumber: this.phoneNumber,
  6.         countryCode: '86',
  7.         verifyCode: this.verCode
  8.       },
  9.       autoCreateUser: false
  10.     }).then(val => {
  11.        //成功登录
  12.     })
  13.       .catch((err: BusinessError) => {
  14.        //登陆失败
  15.       })
复制代码
登录调用的是auth包的sigIn接口,使用方式没有什么难点,需要注意的两点是登录时使用的验证方式可以在密码和验证码之间选择,可以只提供一种也可以两种都提供;再关注autoCreateUser这个字段,这里如果不想让未注册的用户在登录界面也能创建一个新用户,就需要给其传入false值,否认则默认调用该接口如果验证成功的是一个未注册的用户信息是会自动注册一个新用户的,大概成为一个毛病。
邮箱注册/登录

用户注册

  1. auth.createUser({
  2.       kind: 'email',
  3.       email: this.email,
  4.       password: this.password_1,
  5.       verifyCode: this.verCode
  6.     }).then(val => {
  7.       // 创建用户成功
  8.     }).catch((error: BusinessError) => {
  9.       // 创建用户失败
  10.     })
复制代码
与手机号注册只有参数的区别,不展开先容。
用户登录

  1.     auth.signIn({
  2.       //密码登录
  3.       credentialInfo: {
  4.         kind: 'email',
  5.         email: this.email,
  6.         password: this.password
  7.       },
  8.       autoCreateUser: false
  9.     }).then(val => {
  10.         //成功注册
  11.     })
  12.       .catch((err: BusinessError) => {
  13.         //注册失败
  14.       })
复制代码
与手机号登录也只有参数区别,注意验证方式的选择和是否自动创建新用户的控制即可
绑定新的登岸方式

除了可以或许快捷的绑定多种登岸方式意外,AGC平台同时也提供了给已有帐号绑定新的登录方式的接口。这里只先容怎样追加绑定邮箱和手机号
绑定邮箱

  1.     let user = await auth.getCurrentUser()
  2.     user?.updateEmail({
  3.       email: this.email,
  4.       lang: 'zh_CN',
  5.       verifyCode: this.verCode
  6.     }).then(res => {
  7.         //绑定成功
  8.     }).catch((err: BusinessError) => {
  9.         //绑定失败
  10.     })
复制代码
可以看到,在举行绑定之前需要用户已经登入,在用户已经处于登岸状态之后在恣意地方调用auth包下的getCurrenUser接口都可以获取到登录进来的用户。在获取到用户之后,通过用户对象的updateEmail接口,传入干系参数即可。这里需要注意的是,这个接口不管理用户是第一次绑定邮箱照旧需要换绑邮箱,如果需要做这两者活动的业务逻辑区分,可以调用user对象的getEmail对象来判断用户是否已经绑定过邮箱,是要举行哪种活动。
绑定手机号

  1.     let user = await auth.getCurrentUser()
  2.     user?.link({
  3.       kind: 'phone',
  4.       phoneNumber: this.phoneNumber,
  5.       verifyCode: this.verCode,
  6.       countryCode: '86'
  7.     }).then((res) => {
  8.         //绑定成功
  9.     }).catch((err: BusinessError) => {
  10.         //绑定失败
  11.     })
复制代码
同样,在举行绑定之前需要处于已登录的状态。调用getCurrenUser方法来获取到用户对象,然后调用link接口来绑定新的手机号。这里也需要考虑是否区分用户是否已经绑定过手机号,不多做展开先容。
退出登录

很简单,直接上代码
  1.           auth.signOut()
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

冬雨财经

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表