OpenHarmony端云一体化应用开发快速入门练习(中)登录认证

一、登录认证手机
可以在应用中集成手机帐号认证方式,您的用户可以使用“手机号码+密码”或者“手机号码+验证码”的方式来登录您的应用。
(一)前提条件
需要在AGC控制台开通认证服务。

需要先在您的应用中集成SDK。

(二)注册

OpenHarmony端云一体化应用开发快速入门练习(中)登录认证_第1张图片

1.申请手机号码注册的验证码。

说明:在使用手机号码注册之前,需要先验证您的手机,确保该手机归您所有。

调用AGConnectAuth.requestPhoneVerifyCode 申请验证码。

let verifyCodeSettings = new VerifyCodeSettingBuilder()
  .setAction(VerifyCodeAction.REGISTER_LOGIN)
  .setLang('zh_CN')
  .setSendInterval(60)
  .build();
agconnect.auth().requestPhoneVerifyCode(countryCode,phoneNumber,verifyCodeSettings)
  .then(verifyCodeResult => {
     //验证码申请成功
  }).catch(error => {
      //验证码申请失败    
  });

使用手机号码注册用户。
调用PhoneUserBuilder生成PhoneUser,然后调用AGConnectAuth.createPhoneUser注册用户。注册成功后,系统会自动登录,无需再次调用登录接口

let user = new PhoneUserBuilder()
    .setCountryCode("countryCode")
    .setPhoneNumber("phoneNumber")
    .setPassword("password") //可以给用户设置初始密码。填写后后续可以用密码来登录
    .setVerifyCode('verifyCode')
    .build();

agconnect.auth().createPhoneUser(user)
.then(result => {
// 创建用户成功
})
.catch(error => {
// 创建用户失败
})

3.登录成功后可以调用AGConnectAuth.getCurrentUser获取用户帐号数据。

agconnect.auth().getCurrentUser();

复制

(三)密码登录

OpenHarmony端云一体化应用开发快速入门练习(中)登录认证_第2张图片


1.在应用的登录界面,初始化AGConnectAuth实例,获取AGC的用户信息,检查是否有已经登录的用户。如果有,则可以直接进入用户界面,否则显示登录界面。

agconnect.auth().getCurrentUser().then(user=>{
    if(user){
        //业务逻辑
    }
});
2.调用PhoneAuthProvider.credentialWithPassword采用密码方式创建手机帐号凭证。
credential = agconnect.auth().PhoneAuthProvider.credentialWithPassword(countryCode,phoneNumber,password);
3.获取credential成功后,调用AGConnectAuth.signIn实现登录。
agconnect.auth().signIn(credential)
         .then(user => {
             //登录成功
         }).catch(error => {
             //登录失败
         });

(四)验证码登录

OpenHarmony端云一体化应用开发快速入门练习(中)登录认证_第3张图片

1.在应用的登录界面,初始化AGConnectAuth实例,获取AGC的用户信息,检查是否有已经登录的用户。如果有,则可以直接进入用户界面,否则显示登录界面。

agconnect.auth().getCurrentUser().then(user=>{
    if(user){
        //业务逻辑
    }
});

2.调用AGConnectAuth.requestPhoneVerifyCode申请手机登录验证码。

let verifyCodeSettings = new VerifyCodeSettingBuilder()
  .setAction(VerifyCodeAction.REGISTER_LOGIN)
  .setLang('zh_CN')
  .setSendInterval(60)
  .build();
agconnect.auth().requestPhoneVerifyCode(countryCode, phoneNumber,verifyCodeSettings)
  .then(verifyCodeResult => {
     //验证码申请成功
  }).catch(error => {
      //验证码申请失败    
  });

3.调用PhoneAuthProvider.credentialWithVerifyCode采用验证码方式创建手机帐号凭证。

credential = agconnect.auth().PhoneAuthProvider.credentialWithVerifyCode(countryCode, phoneNumber, verifyCode);
4.获取credential成功后,调用AGConnectAuth.signIn实现登录。
agconnect.auth().signIn(credential)
         .then(user => {
             //登录成功
         }).catch(error => {
             //登录失败
         });

(五)修改手机号码
注意,修改手机号码需要用户处于登录状态。
1.调用AGConnectAuth.requestPhoneVerifyCode申请验证码

let verifyCodeSettings = new VerifyCodeSettingBuilder()
  .setAction(VerifyCodeAction.REGISTER_LOGIN)
  .setLang('zh_CN')
  .setSendInterval(60)
  .build();
agconnect.auth().requestPhoneVerifyCode(countryCode,phoneNumber,verifyCodeSettings)
  .then(verifyCodeResult => {
     //验证码申请成功
  }).catch(error => {
      //验证码申请失败    
  });

2.调用AGConnectUser.updatePhone修改手机号码。

user.updatePhone(countryCode, newPhone, newVerifyCode, lang);

说明:对于修改手机号码操作,要求用户必须在5分钟内登录过应用才能执行。若登录已超时,请参见帐号重认证先完成重认证。
(六)修改密码
注意:修改密码时需要用户处于登录状态。
1.调用AGConnectAuth.requestPhoneVerifyCode申请验证码。

let verifyCodeSettings = new VerifyCodeSettingBuilder()
  .setAction(VerifyCodeAction.RESET_PASSWORD)
  .setLang('zh_CN')
  .setSendInterval(60)
  .build();
agconnect.auth().requestPhoneVerifyCode(countryCode,phoneNumber,verifyCodeSettings)
  .then(verifyCodeResult => {
     //验证码申请成功
  }).catch(error => {
      //验证码申请失败    
  });

2.调用AGConnectUser.updatePassword修改密码。

// 手机provider为11
user.updatePassword(newPassword, verifyCode, AGConnectAuthCredentialProvider.Phone_Provider);

说明:对于修改手机密码操作,要求用户必须在5分钟内登录过应用才能执行。若登录已超时,请参见帐号重认证先完成重认证。
(七)重置密码
注意:重置密码时用户可以不登录。
1.调用AGConnectAuth.requestPhoneVerifyCode申请验证码。

let verifyCodeSettings = new VerifyCodeSettingBuilder()
  .setAction(VerifyCodeAction.RESET_PASSWORD)
  .setLang('zh_CN')
  .setSendInterval(60)
  .build();
agconnect.auth().requestPhoneVerifyCode(countryCode,phoneNumber,verifyCodeSettings)
  .then(verifyCodeResult => {
     //验证码申请成功
  }).catch(error => {
      //验证码申请失败    
  });

2.调用AGConnectAuth.resetPasswordByPhone重置密码。

agconnect.auth().resetPasswordByPhone(countryCode, phoneNumber, newPassword, verifyCode);

(八)更多信息
如果想让用户可以使用多个帐号登录您的应用,可以将多个帐号进行关联。
当用户不需要使用应用,或者需要切换其他帐号登录认证,可以先执行登出。
当用户需要注销当前用户,可以进行销户。
对于销户、修改密码、关联帐号以及重置手机帐号和邮箱帐号等敏感操作,为了提高安全性,需要用户必须在5分钟内登录过才能执行。如果用户执行敏感操作时登录超过5分钟,需要帐号重认证后再执行敏感操作。
可以参考异常处理实现自己的异常处理机制,从而减少异常情况的发生。
可以使用云函数触发器来接收用户注册、登录、销户等关键事件,从而扩展认证服务的能力。
二、登录认证邮箱

可以在应用中集成邮箱帐号认证方式,您的用户可以使用“邮箱地址+密码”或者“邮箱地址+验证码”的方式来登录您的应用。
(一)前提条件
需要在AGC控制台开通认证服务。
需要先在您的应用中集成SDK。
(二)注册

OpenHarmony端云一体化应用开发快速入门练习(中)登录认证_第4张图片


1.申请手机号码注册的验证码。
说明:在使用手机号码注册之前,需要先验证您的手机,确保该手机归您所有。
调用AGConnectAuth.requestPhoneVerifyCode 申请验证码。

let verifyCodeSettings = new VerifyCodeSettingBuilder()
  .setAction(VerifyCodeAction.REGISTER_LOGIN)
  .setLang('zh_CN')
  .setSendInterval(60)
  .build();
agconnect.auth().requestPhoneVerifyCode(countryCode,phoneNumber,verifyCodeSettings)
  .then(verifyCodeResult => {
     //验证码申请成功
  }).catch(error => {
      //验证码申请失败    
  });

2.使用手机号码注册用户。
调用PhoneUserBuilder生成PhoneUser,然后调用AGConnectAuth.createPhoneUser注册用户。注册成功后,系统会自动登录,无需再次调用登录接口。

let user = new PhoneUserBuilder()
    .setCountryCode("countryCode")
    .setPhoneNumber("phoneNumber")
    .setPassword("password") //可以给用户设置初始密码。填写后后续可以用密码来登录
    .setVerifyCode('verifyCode')
    .build();

agconnect.auth().createPhoneUser(user)
.then(result => {
// 创建用户成功
})
.catch(error => {
// 创建用户失败
})

3.登录成功后可以调用AGConnectAuth.getCurrentUser获取用户帐号数据。

agconnect.auth().getCurrentUser();

(二)密码登录

OpenHarmony端云一体化应用开发快速入门练习(中)登录认证_第5张图片


1.在应用的登录界面,初始化AGConnectAuth实例,获取AGC的用户信息,检查是否有已经登录的用户。如果有,则可以直接进入用户界面,否则显示登录界面。

agconnect.auth().getCurrentUser().then(user=>{
    if(user){
        //业务逻辑
    }
});

2.调用PhoneAuthProvider.credentialWithPassword采用密码方式创建手机帐号凭证。

credential = agconnect.auth().PhoneAuthProvider.credentialWithPassword(countryCode,phoneNumber,password);

3.获取credential成功后,调用AGConnectAuth.signIn实现登录。

agconnect.auth().signIn(credential)
         .then(user => {
             //登录成功
         }).catch(error => {
             //登录失败
         });

(三)验证码登录

OpenHarmony端云一体化应用开发快速入门练习(中)登录认证_第6张图片


1.在应用的登录界面,初始化AGConnectAuth实例,获取AGC的用户信息,检查是否有已经登录的用户。如果有,则可以直接进入用户界面,否则显示登录界面。

agconnect.auth().getCurrentUser().then(user=>{
    if(user){
        //业务逻辑
    }
});

2.调用AGConnectAuth.requestEmailVerifyCode申请登录验证码。

let verifyCodeSettings = new VerifyCodeSettingBuilder()
  .setAction(VerifyCodeAction.REGISTER_LOGIN)
  .setLang('zh_CN')
  .setSendInterval(60)
  .build();
agconnect.auth().requestEmailVerifyCode('email',verifyCodeSettings)
  .then(verifyCodeResult => {
     //验证码申请成功
  }).catch(error => {
      //验证码申请失败    
  })

3.调用EmailAuthProvider.credentialWithVerifyCode采用验证码方式创建邮箱帐号凭证(credential)。

credential = agconnect.auth().EmailAuthProvider.credentialWithVerifyCode(emailStr, password, verifyCode);

password参数可以不传,如果同时输入了密码和验证码,则会对密码和验证码都做验证。
4.获取credential成功后,调用AGConnectAuth.signIn实现登录。

agconnect.auth().signIn(credential)
         .then(user => {
             //登录成功
         }).catch(error => {
             //登录失败
         });

(五)修改邮箱地址
注意:修改邮箱时需要用户处于登录状态。
1.调用AGConnectAuth.requestEmailVerifyCode申请验证码。

let verifyCodeSettings = new VerifyCodeSettingBuilder()
  .setAction(VerifyCodeAction.REGISTER_LOGIN)
  .setLang('zh_CN')
  .setSendInterval(60)
  .build();
agconnect.auth().requestEmailVerifyCode('email',verifyCodeSettings)
  .then(verifyCodeResult => {
     //验证码申请成功
  }).catch(error => {
      //验证码申请失败    
  });

2.调用AGConnectUser.updateEmail修改邮箱地址。

user.updateEmail(newEmail, newVerifyCode, lang)

说明:对于修改邮箱地址操作,要求用户必须在5分钟内登录过应用才能执行。若登录已超时,请参见帐号重认证先完成重认证。
(六)修改密码
注意:修改密码时需要用户处于登录状态。
1.调用AGConnectAuth.requestEmailVerifyCode申请验证码。

let verifyCodeSettings = new VerifyCodeSettingBuilder()
  .setAction(VerifyCodeAction.RESET_PASSWORD)
  .setLang('zh_CN')
  .setSendInterval(60)
  .build();
agconnect.auth().requestEmailVerifyCode('email',verifyCodeSettings)
  .then(verifyCodeResult => {
     //验证码申请成功
  }).catch(error => {
      //验证码申请失败    
  });

2.调用AGConnectUser.updatePassword修改密码。

// 邮箱provider为12
user.updatePassword(newPassword, verifyCode, provider);

说明:对于修改邮箱密码操作,要求用户必须在5分钟内登录过应用才能执行。若登录已超时,请参见帐号重认证先完成重认证。
(七)重置密码
注意:重置密码时用户可以不登录。
1.调用AGConnectAuth.requestEmailVerifyCode申请验证码。

let verifyCodeSettings = new VerifyCodeSettingBuilder()
  .setAction(VerifyCodeAction.RESET_PASSWORD)
  .setLang('zh_CN')
  .setSendInterval(60)
  .build();
agconnect.auth().requestEmailVerifyCode('email',verifyCodeSettings)
  .then(verifyCodeResult => {
     //验证码申请成功
  }).catch(error => {
      //验证码申请失败    
  });

2.调用AGConnectAuth.resetPasswordByEmail重置密码。

agconnect.auth().resetPasswordByEmail(email, newPassword, verifyCode);

(八)更多信息
如果想让用户可以使用多个帐号登录您的应用,可以将多个帐号进行关联。
当用户不需要使用应用,或者需要切换其他帐号登录认证,可以先执行登出。
当用户需要注销当前用户,可以进行销户。
对于销户、修改密码、关联帐号以及重置手机帐号和邮箱帐号等敏感操作,为了提高安全性,需要用户必须在5分钟内登录过才能执行。如果用户执行敏感操作时登录超过5分钟,需要帐号重认证后再执行敏感操作。
您可以参考异常处理实现自己的异常处理机制,从而减少异常情况的发生。
您可以使用云函数触发器来接收用户注册、登录、销户等关键事件,从而扩展认证服务的能力。
三、登录认证关联帐号
(一)前提条件
您需要在AGC控制台开通认证服务。
您需要先在您的应用中集成SDK。
(二)将身份验证提供方凭据与用户帐号关联
可以将身份验证提供方凭据关联至现有用户帐号,允许用户使用多个身份验证提供方服务登录您的应用。无论用户使用哪个帐号登录,均可通过同一AGC用户ID识别用户。例如,使用手机帐号登录的用户可以关联邮箱帐号,以后便可使用这两种方法中的任意一种登录。
说明:关联帐号前,需要为应用增加对两个或多个身份验证提供方(可能包括匿名身份验证)的支持。
关联的认证方式只能有一个帐号,例如手机帐号关联邮箱帐号,只能关联一个邮箱帐号,不能关联多个。另外被关联的帐号需要没有登录过应用,例如已经通过认证服务登录过的邮箱帐号也无法进行关联。

OpenHarmony端云一体化应用开发快速入门练习(中)登录认证_第7张图片


1.使用任意身份验证提供方让用户登录。
2.按照新身份验证提供方的登录流程逐步进行,直到调用AGConnectAuth.signIn方法前停止。
3.为新的身份验证提供方获取AGConnectAuthCredential,示例如下。

let credential;
// 用于关联手机号的credential 
credential = agconnect.auth().PhoneAuthProvider.credentialWithVerifyCode(countryCode, phonenumber, verifyCode);
// 用于关联邮箱的credential 
credential = agconnect.auth().EmailAuthProvider.credentialWithVerifyCode(email, verifyCode);

4.将credential传递到已登录用户的AGConnectUser.link接口中。关联成功后,即可以使用任意一个提供方的凭证来登录相同的AGC帐号

agconnect.auth().getCurrentUser().then(async user=>{
    await user.link(credential);
});

(三)取消身份验证提供方凭据与用户帐号的关联
也可以取消身份验证提供方凭据与用户帐号的关联,以便用户不再使用该身份验证提供方进行登录。
取消关联时,需提供要取消的身份验证提供方ID,然后调用AGConnectUser.unlink接口进行取消。
说明:当仅有一个身份验证提供方时不能进行取消关联操作。

agconnect.auth().getCurrentUser().then(async user=>{
    await user.unlink(credentialProvider);
});

(四)更多信息
当用户不需要使用应用,或者需要切换其他帐号登录认证,可以先执行登出。
当用户需要注销当前用户,可以进行销户。
对于销户、修改密码、关联帐号以及重置手机帐号和邮箱帐号等敏感操作,为了提高安全性,需要用户必须在5分钟内登录过才能执行。如果用户执行敏感操作时登录超过5分钟,需要帐号重认证后再执行敏感操作。
可以参考异常处理实现自己的异常处理机制,从而减少异常情况的发生。

你可能感兴趣的:(HarmonyOS)