HarmonyOS鸿蒙Next中个人开发登录应用,使用华为登录太过麻烦,有没有其他替代方案

HarmonyOS鸿蒙Next中个人开发登录应用,使用华为登录太过麻烦,有没有其他替代方案 【问题描述】:目前我想做一个登录会员功能,这边尝试了一下iap和华为登录,华为登录使用一键登录因为我是个人账户使用不了,使用替代方案华为账号按钮登录再通过静默登录比较繁琐,有没有其他方案可以实现登录功能

【问题现象】: cke_507.png

【版本信息】:6.0.0

【复现代码】:NA

【尝试解决方案】:尝试使用华为账号登录按钮


更多关于HarmonyOS鸿蒙Next中个人开发登录应用,使用华为登录太过麻烦,有没有其他替代方案的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

可以使用邮箱认证登录,个人开发者最省力的一个 QQ邮箱就支持开启SMTP服务,作为登录的唯一目前是个人开发者最省钱省力的一种方式
可以参考:https://cloud.tencent.com/developer/article/1777037

更多关于HarmonyOS鸿蒙Next中个人开发登录应用,使用华为登录太过麻烦,有没有其他替代方案的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


用户常用就是手机号(但是要用短信机,或者买云包),或者用微信登录(对接也麻烦),其实鸿蒙开发,特别是纯血鸿蒙的,肯定是鸿蒙设备,用户用华为的一键登录最方便,集成开发也简单,不过个人开发者目前的确无法申请华为账号一键登录,但是可以通过首次使用华为账号正常登录,后续通过静默登录方式进行便捷登录。

@Entry
@Component
struct PreviewLoginButtonPage {
  // 构造LoginWithHuaweiIDButton组件的控制器
  controller: loginComponentManager.LoginWithHuaweiIDButtonController =
    new loginComponentManager.LoginWithHuaweiIDButtonController()
      .onClickLoginWithHuaweiIDButton((error: BusinessError, response: loginComponentManager.HuaweiIDCredential) => {
        if (error) {
          this.dealAllError(error);
          return;
        }

        if (response) {
          hilog.info(0x0000, 'testTag', 'Succeeded in getting response.');
          const authCode = response.authorizationCode;
          // 开发者处理authCode
        }
      });

  // 错误处理
  dealAllError(error: BusinessError): void {
    hilog.error(0x0000, 'testTag',
      `Failed to login, errorCode is ${error.code}, errorMessage is ${error.message}`);
    // 在应用登录涉及UI交互场景下,建议按照如下错误码指导提示用户
    if (error.code === ErrorCode.ERROR_CODE_LOGIN_OUT) {
      // 用户未登录华为账号,请登录华为账号并重试或者尝试使用其他方式登录
    } else if (error.code === ErrorCode.ERROR_CODE_NETWORK_ERROR) {
      // 网络异常,请检查当前网络状态并重试或者尝试使用其他方式登录
    } else if (error.code === ErrorCode.ERROR_CODE_INTERNAL_ERROR) {
      // 登录失败,请尝试使用其他方式登录
    } else if (error.code === ErrorCode.ERROR_CODE_USER_CANCEL) {
      // 用户取消授权
    } else if (error.code === ErrorCode.ERROR_CODE_SYSTEM_SERVICE) {
      // 系统服务异常,请稍后重试或者尝试使用其他方式登录
    } else if (error.code === ErrorCode.ERROR_CODE_REQUEST_REFUSE) {
      // 重复请求,应用无需处理
    } else if (error.code === ErrorCode.ERROR_CODE_AGREEMENT_STATUS_NOT_ACCEPTED) {
      // 用户未同意协议
    } else {
      // 应用登录失败,请尝试使用其他方式登录
    }
  }

  build() {
    Column() {
      Column() {
        Column() {
          LoginWithHuaweiIDButton({
            params: {
              // LoginWithHuaweiIDButton支持的样式
              style: loginComponentManager.Style.BUTTON_RED,
              // 账号登录按钮在登录过程中展示加载态
              extraStyle: {
                buttonStyle: new loginComponentManager.ButtonStyle().loadingStyle({
                  show: true
                })
              },
              // LoginWithHuaweiIDButton的边框圆角半径
              borderRadius: 24,
              // LoginWithHuaweiIDButton支持的登录类型
              loginType: loginComponentManager.LoginType.ID,
              // LoginWithHuaweiIDButton支持按钮的样式跟随系统深浅色模式切换
              supportDarkMode: true
            },
            controller: this.controller
          })
        }
        .height(40)
      }.width('100%')
    }
    .justifyContent(FlexAlign.Center)
    .constraintSize({ minHeight: '100%' })
    .margin({
      left: 16,
      right: 16
    })
  }
}

export enum ErrorCode {
  // 账号未登录
  ERROR_CODE_LOGIN_OUT = 1001502001,
  // 网络错误
  ERROR_CODE_NETWORK_ERROR = 1001502005,
  // 内部错误
  ERROR_CODE_INTERNAL_ERROR = 1001502009,
  // 用户取消授权
  ERROR_CODE_USER_CANCEL = 1001502012,
  // 系统服务异常
  ERROR_CODE_SYSTEM_SERVICE = 12300001,
  // 重复请求
  ERROR_CODE_REQUEST_REFUSE = 1001500002,
  // 用户未同意用户协议
  ERROR_CODE_AGREEMENT_STATUS_NOT_ACCEPTED = 1005300001
}

先说感受:
你是我第一个听到说集成华为登录复杂的, 华为登录研究一下 不难 很省时间

再说你自己实现

首先你需要在登陆/注册 的时候 将用户数据存储到数据库中, 登录的话 做查询, 注册的话做新增
然后 就是登录的相关逻辑这个比较复杂你需要自己去搜索一下

在HarmonyOS Next中,个人开发者可使用第三方登录替代华为账号登录。系统支持集成微信、QQ等主流第三方SDK进行授权登录。具体实现需在AppGallery Connect配置对应服务,并在应用内调用HarmonyOS的Account Kit接口完成OAuth流程。此方案可减少用户注册步骤,但需注意遵循平台审核规范。

在HarmonyOS Next中,个人开发者实现登录功能,除了华为账号登录,确实有其他替代方案。核心思路是使用第三方云服务或自行搭建后端。

主要替代方案:

  1. 集成第三方认证服务SDK 这是最直接的方案。你可以在应用中集成提供HarmonyOS SDK的第三方认证服务,例如:

    • 手机号一键登录:可以接入其他服务商(如阿里云、腾讯云)提供的手机号一键登录SDK。这些服务商通常有个人开发者套餐。
    • 第三方社交登录:可以集成微信、QQ、微博等社交账号登录的SDK。这需要你到对应开放平台申请应用,并确保其SDK支持HarmonyOS或提供通用API。
  2. 自建账号密码体系 这是最传统且可控的方案。你需要:

    • 搭建后端服务器:用于处理用户注册、登录、会话管理。
    • 设计数据库:存储用户名、密码(需加密哈希存储)等信息。
    • 应用端实现:在应用中提供账号密码输入界面,通过HTTPS API与你的服务器通信进行认证。成功后,服务器返回Token(如JWT),应用本地保存Token用于后续接口鉴权。

方案对比与选择建议:

  • 开发成本:方案1(第三方SDK)通常集成更快,但受限于服务商规则。方案2(自建)自由度最高,但需要全栈开发能力。
  • 用户体验:手机号一键登录体验最佳;账号密码次之;华为账号按钮+静默登录流程确实较长。
  • 数据归属:使用第三方登录,部分用户数据由服务商掌控。自建体系则数据完全由你掌控。

对于个人开发者,如果希望快速上线且聚焦应用核心功能,建议优先调研其他主流手机号一键登录服务商是否已提供HarmonyOS支持。如果应用用户群体对社交账号接受度高,集成微信登录也是常见选择。若希望完全自主可控且具备后端开发能力,则可采用自建账号体系。

在实现时,请务必遵循HarmonyOS应用开发规范,特别是用户数据隐私与安全相关要求,确保登录过程安全可靠。

回到顶部