鸿蒙元服务中使用 button 组件获取手机号点击无反应,通常是由证书配置、权限申请或配置参数错误导致的。请按以下步骤排查:
1. 检查代码写法
鸿蒙元服务中不需要 withCredentials 和 lang 属性(这些是微信小程序特有的),请使用标准写法:
<button
class="u-reset-button item-btn btn-box"
open-type="getPhoneNumber"
@getphonenumber="onGetPhoneNumber"
@error="handleError"
>
{{ confirmText }}
</button>
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
const onGetPhoneNumber = (e) => {
console.log('获取手机号授权', e);
// 获取 code:e.detail.code
console.log(e.detail.code);
};
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
2. 检查签名证书配置
签名证书不能使用自动签名,必须使用从 AGC 后台下载的调试证书。在 HBuilderX 中打开展示原生日志,观察是否有类似 Failed to check the fingerprint 的告警,如果有则说明证书配置有问题。
3. 检查 AGC 后台配置
访问 AGC 开发与服务 - 我的项目,选择对应的项目和应用:
- 确保已申请获取您的手机号敏感权限且已审核通过(申请后需等待 24 小时生效)
- 打开常规 - 应用,配置指纹,确保已添加调试证书的指纹
4. 检查 client_id 配置
确认 mp-configs/entry/src/main/module.json5 中的 metadata client_id 值正确,必须是应用的 ClientID(在 AGC 后台应用详情页面下方查看),而不是项目的 ClientID。
5. 清除缓存重新运行
如果修改过配置参数没有立刻生效,请在真机打开设置 - 应用与元服务,找到正在开发的应用选择移除,然后重新运行。
6. 检查用户授权状态
如果是测试环境,之前可能已授权或拒绝过,需要手机打开设置 - 华为账号 - 账号安全 - 使用华为账号的应用,删除该应用的授权后重试。
详细文档可参考:鸿蒙元服务登录 - 如何获取用户手机号