【HarmonyOS NEXT】华为账号一键登录实现

一、背景

在鸿蒙开发过程中,登录除了账号密码与手机号验证码登录以为,鸿蒙还有一种登录方式是华为账号一键登录,对于用户来讲方便又快捷,更能增加用户体验与好感。此篇文章整理总结下华为账号一键登录的流程与思路

二、概述

华为账号一键登录是基于OAuth 2.0协议标准OpenID Connect协议标准构建的OAuth2.0 授权登录系统,应用可以通过华为账号一键登录能力快捷地获取华为账号用户的身份标识和手机号,快速建立应用内的用户体系。

优势

  • 利用系统账号的安全性和便利性,用户无需输入账号名和密码,无需复杂的安全验证,简化登录步骤,提高用户转化率。
  • 提供系统验证过的手机号,关联应用已有用户。
  • 实现Phone、Tablet、PC/2in1、TV设备一致的登录体验。

三、前提准备

3.1、开发调试:

使用真机调试,目前模拟器无法调试

3.2、配置Client ID

3.2.1、获取Client ID

在 AppGallery Connect(简称AGC)的开发与服务中,选择对应的项目和对应的元服务,在"常规 > 应用 "下获取"OAuth 2.0客户端ID(凭据)"处的Client ID。

3.2.2、配置Client ID

在工程中entry模块的module.json5文件中,新增metadata,配置name为client_id,value为上一步获取的Client ID的值,如下所示:

TypeScript 复制代码
"module": {
  "name": "<name>",
  "type": "entry",
  "description": "<description>",
  "mainElement": "<mainElement>",
  "deviceTypes": [],
  "pages": "<pages>",
  "abilities": [],
  "metadata": [ // 配置信息如下
    {
      "name": "client_id",
      "value": "xxxxx" // 将上一步获取到的Client ID赋值给value,请注意不要使用其他方式设置value值
    }
  ]
 }

3.3、配置scope权限

根据官网指引来获取scope权限:

配置scope权限

说明:获取您的手机号、获取收货地址权限,仅支持企业开发者申请,不支持个人开发者申请

四、具体实现

4.1、业务逻辑流程

4.2、具体实现效果

4.3、具体步骤

第一步:获取匿名手机号

在组件挂载前获取匿名手机号,以下是官网地址,详细可参考官网文档

https://developer.huawei.com/consumer/cn/doc/harmonyos-references/account-api-authentication#section610319714214

TypeScript 复制代码
  getQuickLoginAnonymousPhone(){
    try {
      // 创建授权请求,并设置参数
      const authRequest = new authentication.HuaweiIDProvider().createAuthorizationWithHuaweiIDRequest();
      // 获取匿名手机号需传quickLoginAnonymousPhone这个scope,传参之前需要先申请"华为账号一键登录"权限
      //(权限名称为:quickLoginMobilePhone),后续才能获取匿名手机号数据
      authRequest.scopes = ['quickLoginAnonymousPhone']
      // 用于防跨站点请求伪造
      authRequest.state = util.generateRandomUUID();
      // 一键登录场景该参数只能设置为false
      authRequest.forceAuthorization = false;
      const controller = new authentication.AuthenticationController();
      controller.executeRequest(authRequest).then((response:authentication.AuthorizationWithHuaweiIDResponse)=>{
        const anonymousPhone = response.data?.extraInfo?.quickLoginAnonymousPhone as string
        if(anonymousPhone){
          this.quickLoginAnonymousPhone = anonymousPhone
          return
        }
      })
    }catch (e){
      console.log('lucy== getQuickLoginAnonymousPhone--e',e,JSON.stringify(e))
    }
  }

第二步:华为账号一键登录

可以直接使用官网提供的能力---->LoginWithHuaweiIDButton (华为账号Button登录组件)

以下是官网地址,详细可参考官网文档

https://developer.huawei.com/consumer/cn/doc/harmonyos-references/account-api-huawei-id-button#section1624716107193

第三步:华为授权,返回authCode/openID等凭证

第四步、调用后端接口校验并缓存用户数据

相关推荐
lilian2331 小时前
HarmonyOS 7 新特性(二十五)|智慧手势:意图识别与误触治理
华为·harmonyos
贾伟康3 小时前
【时光清单|14】HarmonyOS ArkTS 主导航实战:统一页面入口、返回路径和参数校验
harmonyos·arkts·arkui·navigation·路由管理
贾伟康8 小时前
【时光清单|05】HarmonyOS ArkTS 倒计时卡片实战:适配 2x2、2x4 与 4x4 多尺寸
harmonyos·arkts·arkui·服务卡片·formextensionability
小雨青年8 小时前
【HarmonyOS 7 悬浮页签深度实战】07 折叠屏、平板与宽窗口的布局适配
华为·harmonyos
熊猫钓鱼>_>10 小时前
鸿蒙AI Agent新范式:从“对话式辅助”到“工程化代理”的Harness架构实战解析
人工智能·笔记·学习·华为·架构·harmonyos
大锅盖110 小时前
HarmonyOS ArkUI 非遗纹样素材平台设计复盘:朱砂宣纸与鎏金黛蓝的文化守护
华为·harmonyos
2501_9197490311 小时前
华为鸿蒙管理学习生活与工作APP—小羊管理
学习·华为·生活·harmonyos·鸿蒙
贾伟康11 小时前
【时光清单|20】HarmonyOS ArkTS AppGallery 发布复查实战:核对包名、版本、设备、素材和离线声明
harmonyos·arkts·agc·appgallery·发布复查
fengkai454512 小时前
三、存储基础知识
华为·云计算·存储
lilian23312 小时前
HarmonyOS 7 新特性(二十三)|hiprofiler + hidumper:跨堆内存分析
华为·harmonyos