HarmonyOS鸿蒙Next中uni-app x(HBuilderX)项目调用Map Kit site.nearbySearch/reverseGeocode始终报1002600003 App authentication failed

HarmonyOS鸿蒙Next中uni-app x(HBuilderX)项目调用Map Kit site.nearbySearch/reverseGeocode始终报1002600003 App authentication failed

环境信息

  • HBuilderX 版本:最新版
  • HarmonyOS NEXT 5.0+(API 12)
  • 设备:真机调试
  • 开发框架:uni-app x(UTS 插件编译为 HAR 模块)
  • 签名方式:手动签名(.p12 + .cer + .p7b)

问题描述

在 uni-app x 鸿蒙项目中,通过 UTS 插件调用 @kit.MapKit 的 Site Kit API(site.nearbySearch()site.reverseGeocode()),始终返回错误码 1002600003 App authentication failed

但同一个 UTS 插件中调用 sceneMap.chooseLocation()完全正常,可以成功打开原生选点页面并返回结果。

错误日志

[DIAG] testing site.reverseGeocode...
[DIAG] reverseGeocode FAILED: code=1002600003 msg=App authentication failed.
[DIAG] calling site.nearbySearch...
[DIAG] nearbySearch FAILED: code=1002600003 msg=App authentication failed.

系统日志中还会出现:

W C02D07/NapiProcessor: Parameter error. The configName parameter is invalid.

已验证正确的配置(逐项确认)

配置项 状态
AGC 地图服务 已开通
包名 正确 -
module.json5 client_id 正确 -
SHA256 指纹(AGC 注册) 匹配 -
APP 运行时签名指纹 与 AGC 一致 通过 bundleManager.getBundleInfoForSelfSync 验证
Profile(.p7b) 包含 Map Kit 提取 JSON 确认含 "com.huawei.service.mapkit": {}
Profile 内嵌证书指纹 与 APP 一致 从 .p7b 提取开发者证书 SHA256 与运行时指纹完全一致
agconnect-services.json 已放入 rawfile entry 模块和 HAR 模块均已放置
权限 已声明 INTERNET、LOCATION、APPROXIMATELY_LOCATION
签名方式 手动签名 .p12 + .cer + .p7b
Profile 生成时序 地图服务开通后生成

关键对比

API 上下文方式 结果
sceneMap.chooseLocation(context, options) 显式传入 UIAbilityContext 成功
site.nearbySearch(params) SDK 隐式获取上下文 失败
site.reverseGeocode(params) SDK 隐式获取上下文 失败

两个 API 均在同一个 UTS 插件中调用。chooseLocation 接受显式 context 参数所以成功;Site API 不接受 context 参数,SDK 内部获取上下文时可能出错。

核心怀疑

uni-app x 的 UTS 插件编译为独立 HAR 模块。Site SDK 内部可能通过 getContext() 获取的是 HAR 模块的上下文,而非 entry 模块的上下文,导致 SDK 无法正确读取认证配置。

NapiProcessor: configName parameter is invalid 警告进一步支持这一判断——SDK 在读取某个配置时失败。

已尝试在 HAR 模块的 module.json5 中添加 client_id metadata,以及将 agconnect-services.json 放入 HAR 模块的 resources/rawfile/,均无效。

代码

import { site, sceneMap } from '@kit.MapKit'
import { BusinessError } from '@kit.BasicServicesKit'
import { common } from '@kit.AbilityKit'

// 此函数失败:1002600003
async function testSiteApi() {
    let params: site.NearbySearchParams = {
        query: '',
        location: { latitude: 123, longitude: 456 },
        radius: 200,
        language: 'zh',
    }
    const result = await site.nearbySearch(params)  // 抛出 1002600003
}

// 此函数成功
async function testChooseLocation() {
    let options: sceneMap.LocationChoosingOptions = {
        location: { latitude: 123, longitude: 456 },
        language: 'zh_cn',
        searchEnabled: true,
        showNearbyPoi: true,
    }
    const context = UTSHarmony.getUIAbilityContext()! as common.UIAbilityContext
    const data = await sceneMap.chooseLocation(context, options)  // 成功
}

期望获取的帮助

  1. Site Kit 的 nearbySearch / reverseGeocode 是否支持在 HAR 模块中调用?是否需要特殊的初始化步骤?
  2. NapiProcessor: configName parameter is invalid 的具体含义是什么?需要配置什么?
  3. 是否有办法为 Site Kit API 显式传入 context 或进行初始化(类似 sceneMap.chooseLocation 接受 context 参数那样)?
  4. 在非 DevEco Studio 环境(如 HBuilderX / uni-app x)中使用 Site Kit 是否有已知限制?

更多关于HarmonyOS鸿蒙Next中uni-app x(HBuilderX)项目调用Map Kit site.nearbySearch/reverseGeocode始终报1002600003 App authentication failed的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

从日志中看出来,报了1002600001、1002600002、1002600003这些错误码。提交工单,工程师验证了真机和模拟器,都没有问题。

只能怀疑我这台测试机有网络相关的问题。

最终把这台测试机恢复出厂设置了,问题解决。虽然很莫名其妙,但好在解决了。

这个问题问的人也不算多,估计加我这条帖子一共5个人问过1002600003的问题,几乎没找到有用的答案。希望我这个能给遇到类似问题的人一点启发。

更多关于HarmonyOS鸿蒙Next中uni-app x(HBuilderX)项目调用Map Kit site.nearbySearch/reverseGeocode始终报1002600003 App authentication failed的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


  1. invalid是不合理的意思,就是说napi处理器没有一个参数叫做configName,

错误码1002600003表明应用鉴权失败,常见原因是API Key未正确配置或包名/签名证书指纹不匹配。请在HBuilderX的manifest.json中确认harmonyos模块下apiKeys已设置有效密钥,并保证开通了Map Kit服务。同时检查应用签名指纹(SHA256)是否在AGC上正确绑定。

该错误表示 Site Kit 在 HAR 模块中无法获取有效的应用上下文,导致认证配置读取失败。sceneMap.chooseLocation 因显式传入 context 而成功。

解决方案:在应用入口(EntryAbility 的 onCreate)中调用 MapKit.init(context) 传入全局上下文,让 SDK 提前完成认证初始化。之后在 HAR 插件中调用 site.nearbySearch 等 API 时即可正常鉴权。无需在 HAR 模块内重复放置 agconnect-services.json 或额外声明 client_id

回到顶部