AGC Auth(AGC认证服务)

AGC Auth = AppGallery Connect Auth,华为AGC的认证服务,Serverless用户登录组件,鸿蒙/Android应用快速实现账号登录,不用自己开发账号后端服务。

SDK包名:@hw‑agconnect/auth(ArkTS/鸿蒙NEXT);com.huawei.agconnect:agconnect‑auth(Android)

✅支持登录方式

  • 手机号(密码/短信验证码登录注册)
  • 邮箱账号
  • 华为账号OAuth登录
  • 匿名登录
  • 自有账号系统对接
  • 第三方账号(微信、QQ等)

登录成功拿到:AGC User UID、accessToken、refreshToken,可以直接对接AGC云数据库CloudDB、云函数CloudFunction做权限控制。

🚀完整接入步骤(HarmonyOS NEXT ArkTS)

1. AGC控制台开通服务

  1. 登录 AppGallery Connect
  2. 你的项目 → 云开发(Serverless)→认证服务 →立即开通,设置数据存储区域(国内选CN)
  3. 在认证方式里,打开需要的登录方式(手机号、华为账号等)
  4. 项目设置 → 下载配置文件 agconnect‑services.json,放到项目 entry/src/main/resources/rawfile/ 目录

2. 安装SDK依赖(entry目录执行)

ohpm install @hw-agconnect/hmcore
ohpm install @hw-agconnect/auth

oh‑package.json5会自动写入依赖。

3. module.json5 添加网络权限

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

4. SDK初始化示例代码

import auth from '@hw-agconnect/auth';
import { rawfile } from '@kit.BasicServicesKit';

async function initAgcAuth() {
  //读取rawfile下agconnect‑services.json
  const file = await getContext(this).resourceManager.getRawFileContentSync("agconnect-services.json");
  const jsonStr = buffer.from(file.buffer).toString();
  auth.init(getContext(this), jsonStr);
  await auth.setRegion(auth.Region.CN);
}

5. 常用接口示例

//获取当前登录用户
const user = auth.getCurrentUser();
if(user){
  console.info("uid:", user.getUid())
}

//登出
await auth.signOut();

//获取accessToken
const tokenObj = await auth.getToken(true);
console.log(tokenObj.accessToken)

⚠️常见坑

  1. 403报错agconnect‑services.json不是最新,重新下载覆盖;签名指纹SHA256与AGC控制台不一致。
  2. 华为账号登录:需要额外在module.json5配置client_id元数据,AGC项目设置复制ClientID填入。
  3. 模拟器收不到验证码:控制台支持测试验证码,不需要真实短信。
  4. 权限:必须申请INTERNET网络权限,否则完全无法调用AGC接口。

和HMS账号服务区别

  • AGC Auth:完整用户体系,保存账号、密码,生成UID,配合AGC云服务鉴权,推荐云开发项目用
  • HMS Account Kit:只拿华为账号OAuth信息,不维护账号库,需要你自己后端处理用户信息。

如果你需要,我可以直接给你一份手机号验证码登录完整ArkTS示例代码

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐