OpenHarmony开发者论坛

标题: 调用用户管理授权模块时,报获取分布式库管理器服务失败 [打印本页]

作者: 哄哄    时间: 2025-1-11 11:49
标题: 调用用户管理授权模块时,报获取分布式库管理器服务失败
[md]### 【问题描述】

1. 介绍问题现象和发生的背景
   调用系统接口osAccount registerInputer时,报错,查看系统日志显示

   C02404/PIN_AUTH_SDK: [GetProxy@pinauth_register_impl.cpp:78] get distributed gallery manager service fail

   C02404/PIN_AUTH_SDK: [RegisterInputer@pinauth_register_impl.cpp:44] get proxy failed
2. 相关的代码(请勿使用截图)

   ```
   sptr<inAuthInterface> PinAuthRegisterImpl::GetProxy()
   {
       IAM_LOGI("start");
       if (proxy_ != nullptr) {
           return proxy_;
       }
       sptr<ISystemAbilityManager> sam = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
       if (sam == nullptr) {
           IAM_LOGE("get system ability manager fail");
           return nullptr;
       }
       sptr<IRemoteObject> obj = sam->CheckSystemAbility(SUBSYS_USERIAM_SYS_ABILITY_PINAUTH);
       if (obj == nullptr) {
           IAM_LOGE("get distributed gallery manager service fail");
           return nullptr;
       }
       sptr<IRemoteObject:eathRecipient> dr(new (std::nothrow) PinAuthDeathRecipient());
       if ((obj->IsProxyObject()) && (!obj->AddDeathRecipient(dr))) {
           IAM_LOGE("add death recipient fail");
           return nullptr;
       }

       proxy_ = iface_cast<inAuthInterface>(obj);
       deathRecipient_ = dr;
       IAM_LOGI("succeed to connect distributed gallery manager service");
       return proxy_;
   }
   ```

   ```
   this.pinAuth.registerInputer({
           onGetData: (authSubType, inputData) => {
             let u8aPwd = this.encodeToU8A(this.password);
             LogUtil.info(`${this.TAG} before set data, type: ${this.pinSubType}. authSubType: ${authSubType}`);
             inputData.onSetData(this.pinSubType, u8aPwd);
           }
         });
   ```
3. 运行结果、错误截图

   A00500/[Settings]: Settings PasswordModel#registerInputer failed, error:{"code":201}}

   通过查看系统源码发现 `SUBSYS_USERIAM_SYS_ABILITY_PINAUTH`没有这个系统能力
4. 我尝试过的解决方法和结果

   在moudule.json中已经对接口权限申请

   ```
   "name": "ohos.permission.ACCESS_PIN_AUTH",
   ```
5. 我想要达到的结果

### 【运行环境】

硬件:loongson 3a6000
ROM版本:
DevEvoStudio版本:5.0.3.910
SDK版本:Ohos_sdk_public 5.0.0.71
[/md]
作者: kuaile    时间: 7 天前
pls
1、为啥用到了c++接口,什么场景要这么使用
2、获取分布式数据管理服务的code是DISTRIBUTED_KV_DATA_SERVICE_ABILITY_ID,而不是SUBSYS_USERIAM_SYS_ABILITY_PINAUTH
作者: kuaile    时间: 7 天前
为啥用到了c++接口,最好能用js
作者: 哄哄    时间: 6 天前
回复 kuaile: 我现在用的是账号管理模块调用系统接口函数registerInputer ,上面贴的代码是我查询系统源码时找到的调用系统接口时报的错误,我用的也是系统提供的JS接口没有自己用C++实现,我不太清楚账号管理模块报错信息和分布式管理服务有什么关系。我看了深开鸿王石的帖子,可能是系统镜像没有集成selinux的问题。https://forums.openharmony.cn/fo ... &page=1#pid9965




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5