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

news/2024/10/28 21:18:35/

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

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

(二)注册

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

复制

(三)密码登录


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 => {//登录失败});

(四)验证码登录

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。
(二)注册


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

(二)密码登录


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 => {//登录失败});

(三)验证码登录


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识别用户。例如,使用手机帐号登录的用户可以关联邮箱帐号,以后便可使用这两种方法中的任意一种登录。
说明:关联帐号前,需要为应用增加对两个或多个身份验证提供方(可能包括匿名身份验证)的支持。
关联的认证方式只能有一个帐号,例如手机帐号关联邮箱帐号,只能关联一个邮箱帐号,不能关联多个。另外被关联的帐号需要没有登录过应用,例如已经通过认证服务登录过的邮箱帐号也无法进行关联。


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分钟,需要帐号重认证后再执行敏感操作。
可以参考异常处理实现自己的异常处理机制,从而减少异常情况的发生。


http://www.ppmy.cn/news/485937.html

相关文章

2017年电气报价软件排名!评分最高的是它

↑『电老虎dianlaohu』关注中国专业的电气产品销售与服务平台!电气人必关注的微信平台:技术分享、学习交流、业务合作。 ▲电气报价类软件最常用的是:EP精灵和ExWinner成套报价软件。 ▲电气绘图类软件最常用的是:浩辰CAD2017…

电气产品报价单模板

模拟电气产品和多路转换器的作用主要用于信号的切换,目前集成模拟电子电气产品在小信号领域已成为主导产品,与以往的机械触点式电子电气产品相比,集成电子开关有许多优点,例如,切换速率快、无抖动、耗电省、体积小、工作可靠且容易控制等。接下来那我们来详细了解一下电气产品报…

电气论文:基于价格弹性矩阵的需求侧响应(python实现)

专栏解锁后可以查看该专栏所有文章 文章目录 讲解代码讲解 参考文章 代码 首先看下电价是如何影响负荷的 #!/usr/bin/env python3 # -*- coding: utf-8 -*- # @Author: yudengwu(余登武)

全球与中国电气用有机硅弹性体市场深度研究分析报告

【报告篇幅】:98 【报告图表数】:140 【报告出版时间】:2022年1月 报告摘要 2021年全球电气用有机硅弹性体市场销售额达到了 亿美元,预计2028年将达到 亿美元,年复合增长率(CAGR)为 %&#…

电气simulink常用模块_干货丨16种常用模块电路分析,工程师的必备~

电路图一大张,看似复杂,但也都是由一小块一小块的功能模块组成的。因此要根据大的功能先划分成块,再在块里面看是通过什么电路形式实现的,有些起辅助作用,有些起主要作用。下面小编给大家整理了16种常用的模块电路分析,希望对大家有帮助。 1. RS232通讯电路 双路232通信电…

全球与中国高压电气机柜市场现状及未来发展趋势(2022)

根据QYR(恒州博智)的统计及预测,2021年全球高压电气机柜市场销售额达到了 亿美元,预计2028年将达到 亿美元,年复合增长率(CAGR)为 %(2022-2028)。地区层面来看&#xff0…

医院PACS系统的发展历史

PACS全称Picture Archivingand Communication Systems。它是应用在医院影像科室的系统,主要的任务就是把日常产生的各种医学影像(包括核磁,CT,超声,X光机,红外仪、显微仪等设备产生的图像)通过各…

中国卡车停车电气化市场深度研究分析报告

【报告篇幅】:92 【报告图表数】:141 【报告出版时间】:2021年1月 2019年中国卡车停车电气化市场规模达到了XX亿元,预计2026年将达到XX亿元,年复合增长率(CAGR)为XX%。 本文研究中国市场卡车停车电气化现状及未来发展…