一、开通认证服务
地点:AppGallery Connect (huawei.com)
- 步骤:
- 1 进入到项目设置页面中,并点击左侧菜单中的认证服务
- 2 选择需要开通的服务并开通
复制代码
二、端侧项目情况配置
添加依赖
- entry目录下的oh-package.json5
- // 添加:主要前2个依赖
- "dependencies": {
- "@hw-agconnect/cloud": "^1.0.0",
- "@hw-agconnect/hmcore": "^1.0.0",
- "@hw-agconnect/auth-component": "^1.0.0", // 可选
- "long": "5.2.1"
- }
复制代码
开通网络权限
- // 文件名:module.json5
- // 路径:src/main/module.json5
- "requestPermissions": [
- {
- "name": "ohos.permission.INTERNET" // 网络权限
- },
- ]
复制代码
更新agconnect-services.json文件
- // AGC网站提示:下载最新的配置文件(如果您修改了项目、应用信息或者更改了某个开发服务设置,可能需要更新该文件)
- 为了确保项目不会出错,建立更新下该配置文件
复制代码
三 认证组件界面示例
- import { AuthMode, Login } from '@hw-agconnect/auth-component';
- import router from '@ohos.router';
- @Entry
- @Component
- struct MyLogin {
- @State message: string = 'Hello World';
- build() {
- Column(){
- Text("test")
- // auth-component 中的组件Login
- Login({
- modes:[AuthMode.PHONE_VERIFY_CODE] // 手机验证码登录
- ,
- onSuccess:()=>{
- //登录成功后的回调
- router.pushUrl({url:'pages/Index'})
- }
- }){
- Button("登录").height(60).width("100%")
- }
- }.width("100%").height("100%")
- }
- }
复制代码
四、自界说登录组件
- // 参考链接:https://developer.huawei.com/consumer/cn/doc/AppGallery-connect-Guides/agc-auth-harmonyos-arkts-login-phone-0000001631566338
- import cloud from '@hw-agconnect/cloud';
- import { Auth, VerifyCodeAction } from '@hw-agconnect/cloud';
- @Entry
- @Component
- struct PageTest {
- @State verificationBtnStr:string= "验证码"
- phone:string = ""
- @State verifcationBtnStatus:boolean = true
- @State timer :number = 0
- @State countDown:number = 60
- // 云端获取
- getCloudQrCode(){
- cloud.auth().requestVerifyCode({
- action: VerifyCodeAction.REGISTER_LOGIN,
- lang: 'zh_CN',
- sendInterval: 60,
- verifyCodeType: {
- phoneNumber: this.phone,
- countryCode: '86',
- kind: "phone"
- }
- }).then(verifyCodeResult => {
- //验证码申请成功
- console.log(JSON.stringify(verifyCodeResult))
- AlertDialog.show({
- title: "提示",
- message: "获取验证码成功",
- })
- }).catch((error: Promise<Result>) => {
- AlertDialog.show({
- title: "提示",
- message: "获取验证码失败",
- })
- //验证码申请失败
- });
- }
- // 初始化参数:
- initData(){
- clearInterval(this.timer)
- this.verifcationBtnStatus = true
- this.verificationBtnStr = "验证码"
- this.countDown = 60
- }
- // 发送验证码
- getCode(){
- if(this.phone==''){
- AlertDialog.show({
- title: "提示",
- message: "请输入手机号码",
- })
- return;
- }
- this.verifcationBtnStatus = false
- this.getCloudQrCode()
- this.timer = setInterval(()=>{
- this.verificationBtnStr = `${this.countDown}s`
- if(this.countDown===0){
- this.initData()
- return;
- }
- this.countDown --
- },1000)
- }
- build() {
- Column({space:20}){
- TextInput({placeholder:'请输入手机号:'}).width("100%").height(60).margin({top:20})
- .onChange((value)=>{
- this.phone = value
- })
- Row(){
- TextInput({placeholder:"请输入验证码"}).layoutWeight(1).margin({right:20})
- Button(this.verificationBtnStr).width(120).onClick(()=>{
- this.getCode()
- }).enabled(this.verifcationBtnStatus)
- }.width("100%").height(60)
- Button("登录").width("100%").height(40).padding({
- left:50,right:50
- }).backgroundColor("#ff08be4b")
- }.width("100%").height("100%").padding({left:10,right:10})
- }
- }
复制代码
五、邮箱登录验证
- import cloud from '@hw-agconnect/cloud';
- import { Auth, VerifyCodeAction } from '@hw-agconnect/cloud';
- import router from '@ohos.router';
- @Entry
- @Component
- struct PageTest {
- @State verificationBtnStr:string= "验证码"
- @State phone:string = ""
- @State verifcationBtnStatus:boolean = true
- @State timer :number = 0
- @State countDown:number = 60
- @State data:string = ""
- @State verifCode:string = ""
- // 注销
- loginOut(){
- cloud.auth().signOut().then(() => {
- //登出成功
- AlertDialog.show({
- title: "提示",
- message: "注销用户成功",
- })
- }).catch(() => {
- //登出失败
- });
- }
- //登录
- login(){
-
- // 注册
- this.data = this.verifCode
- cloud.auth().signIn({
- credentialInfo: {
- kind: 'email',
- email: this.phone,
- verifyCode: this.verifCode
- }
- }).then(user => {
- //登录成功
- router.replaceUrl({url:'pages/Index'})
- }).catch((error:Promise<Result>) => {
- //登录失败
- this.data= JSON.stringify(error)
- AlertDialog.show({
- title: "提示",
- message: JSON.stringify(error),
- })
- });
- }
- // 云端获取
- getCloudQrCode(){
- cloud.auth().requestVerifyCode({
- action: VerifyCodeAction.REGISTER_LOGIN,
- lang: 'zh_CN',
- sendInterval: 60,
- verifyCodeType: {
- email: this.phone,
- kind: "email",
- }
- }).then(verifyCodeResult => {
- //验证码申请成功
- console.log(JSON.stringify(verifyCodeResult))
- this.data = JSON.stringify(verifyCodeResult)
- AlertDialog.show({
- title: "提示",
- message: "获取验证码成功",
- })
- }).catch((error: Promise<Result>) => {
- AlertDialog.show({
- title: "提示",
- message: "获取验证码失败",
- })
- //验证码申请失败
- });
- }
- // 初始化参数:
- initData(){
- clearInterval(this.timer)
- this.verifcationBtnStatus = true
- this.verificationBtnStr = "验证码"
- this.countDown = 60
- }
- // 发送验证码
- getCode(){
- if(this.phone==''){
- AlertDialog.show({
- title: "提示",
- message: "请输入用户邮箱",
- })
- return;
- }
- this.verifcationBtnStatus = false
- this.getCloudQrCode()
- this.timer = setInterval(()=>{
- this.verificationBtnStr = `${this.countDown}s`
- if(this.countDown===0){
- this.initData()
- return;
- }
- this.countDown --
- },1000)
- }
- build() {
- Column({space:20}){
- TextInput({placeholder:'请输入手机号:'}).width("100%").height(60).margin({top:20})
- .onChange((value)=>{
- this.phone = value
- })
- Row(){
- TextInput({placeholder:"请输入验证码"}).layoutWeight(1).margin({right:20})
- .onChange((value)=>{
- this.verifCode =value
- })
- Button(this.verificationBtnStr).width(120).onClick(()=>{
- this.getCode()
- }).enabled(this.verifcationBtnStatus)
- }.width("100%").height(60)
- Button("登录").onClick( ()=>{
- this.data = "1aaaaaa"
- this.login()
- }).width("100%").height(40).padding({
- left:50,right:50
- }).backgroundColor("#ff08be4b")
- Button("注销").onClick( ()=>{
- this.data = "1aaaaaa"
- this.loginOut()
- }).width("100%").height(40).padding({
- left:50,right:50
- }).backgroundColor("#ff08be4b")
- Text(this.data).width("100%").height(200).backgroundColor(Color.Pink)
- }.width("100%").height("100%").padding({left:10,right:10})
- }
- }
复制代码
- // 提示用户已经登录过了,需要登出后才能重新登录
- // 重而需要调用注销按钮中的登出方法
- cloud.auth().signOut()
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |