0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OH 应用程序集成 AGC 认证服务实现邮箱登录

ITMING 来源:ITMING 作者:ITMING 2022-11-22 17:53 次阅读

前言

AppGallery Connect(简称AGC)是华为整合内部各项优质服务,将其在全球化、质量、安全、工程管理等领域长期积累的能力开放给开发者。通过集成AGC构建服务,可以降低企业开发、运维、人力成本;通过集成AGC增长服务能够使企业产品快速实现用户增长,加速企业应用商业成功率;通过集成AGC质量服务,可以精准定位应用异常,从而为应用的性能保驾护航。AGC一站式服务可以集成到AndroidIOS、Web、小程序、HarmonyOS/OpenHarmony应用中,如传统开发登录认证服务在集成AGC后可以调用少量接口即可实现多类型的登录方式。

本节以AGC构建应用基础能力认证服务为例,将其集成到OpenHarmony应用程序中。

流程

  • 搭建开发环境
  • 创建项目和应用
  • 开通认证服务
  • 集成SDK
  • 邮箱登录认证

1. 搭建开发环境

下载适合自己操作系统版本的DevEco Studio 3.1 Canary1,安装和配置开发环境在社区已经有很多操作教程,此处不做赘述。

2. 创建项目和应用

2.1 创建项目

在操作之前读者需要拥有一个华为开发者账号,然后登录AppGallery Connect管理中心,点击界面“我的项目”,打开项目创建界面。

在“我的项目”界面点击“添加项目”,输入项目信息,点击“创建并继续”。

接着可选择是否开通分析服务,笔者默认开通。

2.2 添加应用

创建项目完成后,定位在“常规”页签,点击该页签中的“添加应用”按钮,填写应用的实际信息后,点击“确认”按钮完成应用创建。本次以OpenHarmony应用为例,此处需要选择“APP(HarmonyOS)”,应用名称和应用包名与使用DevEco Studio创建项目的名称和包名一致,建议选择有实际意义的字段。

3 开通认证服务

在左侧菜单栏中点击“构建”-->“认证服务”,打开认证服务开通界面。

在“认证方式”页签中,点击“邮箱地址”列后的启用,开启通过邮箱验证码方式登录。

4 集成SDK

4.1 下载SDK配置文件

回到“项目设置” --> "常规"页签,下拉找到“应用”,SDK配置,然后点击下载“agconnect-services.json”,已备创建项目后使用。

4.2 创建项目

打开DevEco Studio点击Create Project,进入创建项目向导页,选择OpenHarmony标签,创建OpenHarmony项目(当然你也可以直接创建HarmonyOS项目,在配置中改动少量的代码让其能够运行在OpenHarmony设备上)。

添加项目信息,其中Project name和Bundle name需要与2.2小节应用名称和包名保持一致。

4.3 集成SDK

在项目AppScope/resouces目录下创建rawfile文件夹,将4.1小节下载的“agconnect-services.json”拷贝到rawfile目录下。

官方示例中提供的是基于Java版本,而笔者基于ArkTS语言的应用程序,那么引入的依赖文件是什么呢?打开华为提供的DevEco Marketpalce资源仓,点击“应用及服务组件”,输入“auth”进行查找。

agconnect-auth-component是一个自定义arkui组件,可以直接引入相对简陋,此处笔者选择agconnect-auth,其可以根据自己的需求来构建页面,当然agconnect-auth-component中关于组件封装可以详细阅读一下,能够帮助你进一步学习组件的封装。

打开终端定位到OhAGCAuth/entry目录,输入npm install --save @ohos/agconnect-auth或者直接在entry目录下的package.json文件中引入。

5 邮箱登录认证

5.1 构建登录页面

页面元素:

  • 邮箱地址输入框(TextInput)
  • 验证码获取按钮(Button)
  • 验证码输入框(TextInput)
  • 登录按钮(Button)
  • 登录信息回显(Text)

5.2 引入AGC认证服务组件

// OhAGCAuth/entry/entryability/EntryAbility.ts
import agconnect from '@ohos/agconnect-api';
import '@ohos/agconnect-core'
import '@ohos/agconnect-auth'

5.3 初始化SDK并配置apikey及clientSecret,并将auth对象保存为全局变量

  • apikey为AGC管理中心项目设置常规页签下项目参数中API密钥(凭据);
  • clientSecret为为AGC管理中心项目设置常规页签下项目参数中客户端ID项Client Secret。
export default class EntryAbility extends Ability {
    onCreate(want, launchParam) {
        hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO);
        hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
        hilog.info(0x0000, 'testTag', '%{public}s', 'want param:' + JSON.stringify(want) ?? '');
        hilog.info(0x0000, 'testTag', '%{public}s', 'launchParam:' + JSON.stringify(launchParam) ?? '');
        
        agconnect.instance().init(this.context);
        agconnect.instance().setApiKey(apikey);
        agconnect.instance().setClientSecret(clientSecret);
        globalThis.auth = agconnect.auth();
        
    }
  
  ...
}

AGC认证服务需要网络请求权限,在entry/modules.json5中添加网络权限。

{
  "module": {
    ...
    "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET"
      }
    ]
  }
}

5.4 完善功能

  1. Index.ets文件中导入邮箱认证需要的包
import {
  AGConnectAuth,
  VerifyCodeAction,
  VerifyCodeSettingBuilder,
  EmailAuthProvider } from '@ohos/agconnect-auth';
import { Logger } from '@ohos/agconnect-base';
  1. 接受全局auth对象。
// 接受auth对象
let auth: AGConnectAuth = globalThis.auth;
  1. 实现点击“获取验证码”发送验证码能力,需要调用requestEmailVerifyCode()方法
Button('获取验证码')
  .width('40%').height(48)
  .fontSize(16)
  .onClick(() => {
    // 申请邮箱验证码配置参数
    let verifyCodeSettings = new VerifyCodeSettingBuilder()
      .setAction(VerifyCodeAction.REGISTER_LOGIN)
      .setLang('zh_CN')
      .setSendInterval(60)
      .build();
    // 发送请求获取邮箱验证码
    auth.requestEmailVerifyCode(this.email, verifyCodeSettings).then(res => {
      Logger.info(TAG, "请求邮箱验证码成功!result: " + JSON.stringify(res));
      this.result = "请求邮箱验证码成功!result: " + JSON.stringify(res);
    }).catch(err => {
      Logger.error(TAG, "请求邮箱验证码失败!error: " + JSON.stringify(err));
      this.result = "请求邮箱验证码失败!error: " + JSON.stringify(err);
    })
  })
  1. 最后一步,将验证码输入后点击登录,调用``方法构建登录用户credential凭证,并调用signIn()方法进行登录。
Button('登录')
  .width('50%')
  .height(64)
  .fontSize(20)
  .backgroundColor(0x025684)
  .onClick(() => {
    // 通过邮箱和验证码获取凭证
    let credential = EmailAuthProvider.credentialWithVerifyCode(this.email, this.verifyCode);
    // 登录接口,通过第三方认证来登录AGConnect平台
    auth.signIn(credential).then(res => {
      Logger.info(TAG, "登录成功!result: " + JSON.stringify(res));
      this.result = "登录成功!result: " + res.getUser().getUid();
    }).catch(err => {
      Logger.error(TAG, "登录失败!error: " + JSON.stringify(err));
      this.result = "登录失败!error: " + JSON.stringify(err);
    })
  })

6 打包测试及效果演示

  1. 使用DevEco Studio一键配置签名
  2. 连接DAYU200(OpenHarmony v3.2Beta3)

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • AGC
    AGC
    +关注

    关注

    0

    文章

    161

    浏览量

    51663
  • OpenHarmony
    +关注

    关注

    25

    文章

    3722

    浏览量

    16311
收藏 人收藏

    评论

    相关推荐

    OpenHarmony应用程序集成AGC云存储

    在之前的文章中笔者分享了在OpenHarmony应用程序集成AppGallery Connect(AGC)五大类体系服务中构建应用基础能力的认证
    的头像 发表于 02-27 16:27 1445次阅读
    OpenHarmony<b class='flag-5'>应用程序</b><b class='flag-5'>集成</b><b class='flag-5'>AGC</b>云存储

    鸿蒙原生应用/元服务实战-AGC团队账户

    多人及内外结合去开发运营鸿蒙原生应用元服务时,需要用到团队账户,AGC提供了强大的团队角色与权限分工能力。 团队帐号是开发者联盟为实名开发者提供的多个成员帐号登录与权限管理服务。当前团
    发表于 01-18 16:38

    鸿蒙原生应用元服务实战-Serverless华为账户认证登录需尽快适配

    一、ArkTS\\\\API9,服务器端基于serverless开发的应用与元服务华为账号注册登录功能暂时是不支持的 二、3月1日后的审核要求 3月1日的时间是快到了。 三、会导致的结果
    发表于 02-20 10:14

    调用云服务认证体系

    一、介绍 基于鸿蒙Next实现应用的认证注册流程。二、场景需求 用户注册模块: 邮箱/手机号验证: 密码设置: 个人信息填写: 用户登录模块: 邮箱
    发表于 09-05 09:39

    JAVA实现:使用sAMAccountName作为登录名通过LDAP目录库验证

    实现。其中涉及到JAVA EE的WEB开发,EMAIL、NDS应用模块的配置和结合,数据加密,项目管理过程设计,SVN数据的备份与恢复等等。而我和几个teammates主要负责开发一个web应用程序
    发表于 07-09 08:12

    如何跨多个SOA将RFID Web服务集成到EAI应用程序

    在本文中,我将首先讨论两种开发 RFID 应用程序的方法:传统方法和 RFID Web服务。然后,我将 讨论把 RFID Web服务集成到多个 SOA 中的 EAI
    发表于 07-17 06:31

    HarmonyOS应用端云一体化开发登录组件的使用

    oh-package.json5中新增依赖: “@ohos/agc-auth-component”: “^1.0.5” 2.在代码中集成组件 Column() { Login({ modes
    发表于 05-26 15:34

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

    的能力。二、登录认证邮箱 可以在应用中集成邮箱帐号认证方式,您的用户可以使用“
    发表于 06-20 17:05

    OpenHarmony端云一体化应用开发快速入门练习(下)登出销户等

    一、登出 前提条件:需要在AGC控制台开通认证服务。需要先在您的应用中集成认证服务SDK。 开发
    发表于 06-21 14:17

    HarmonyOS/OpenHarmony原生应用开发-华为Serverless认证服务说明(二)

    Serverless认证服务说明 帮助应用快速构建安全可靠的用户认证系统,给用户更简捷的登录体验。支持手机号、邮箱、国内外主流三方平台帐号、
    发表于 10-10 14:59

    基于SAML单点登录安全服务体系的应用研究

    安全断言标记语言SAML是让互相信赖的双方可以交换安全相关信息的一个XML架构,它定义了不同系统之间安全服务交换认证和授权信息的机制,单点登录技术SSO是实现
    发表于 06-20 09:11 18次下载

    为什么微服务实施那么难_综合解决微服务实施难点的措施

    本文组要概述了为什么微服务实施那么难,以及综合解决微服务实施难点的措施。
    的头像 发表于 02-07 16:38 6266次阅读

    干货:node服务实现负载均衡的步骤

    干货:node服务实现负载均衡的步骤
    的头像 发表于 07-07 10:20 3638次阅读

    浅析数字AGC的matlab仿真程序

    AGC的浮点仿真程序来了!文末还给出参考资料的列表,建议大家去知网下载。这些资料可以帮助大家完善AGC的理论! %%%%%% AGC性能之测试程序
    的头像 发表于 06-29 17:01 3951次阅读

    应用程序中的服务器错误怎么解决?

    在使用应用程序时,可能会遇到服务器错误的问题。这种错误通常会导致应用程序无法正常运行 ,给用户带来不便。下面将介绍应用程序中的服务器错误及其
    的头像 发表于 03-12 15:13 6235次阅读