一、登录认证手机
可以在应用中集成手机帐号认证方式,您的用户可以使用“手机号码+密码”或者“手机号码+验证码”的方式来登录您的应用。
(一)前提条件
需要在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接口进行取消。
说明:当仅有一个身份验证提供方时不能进行取消关联操作。
`html
agconnect.auth().getCurrentUser().then(async user=>{
await user.unlink(credentialProvider);
});
(四)更多信息
当用户不需要使用应用,或者需要切换其他帐号登录认证,可以先执行登出。
当用户需要注销当前用户,可以进行销户。
对于销户、修改密码、关联帐号以及重置手机帐号和邮箱帐号等敏感操作,为了提高安全性,需要用户必须在5分钟内登录过才能执行。如果用户执行敏感操作时登录超过5分钟,需要帐号重认证后再执行敏感操作。
可以参考异常处理实现自己的异常处理机制,从而减少异常情况的发生。