惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
Webroot Blog
Webroot Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
T
Threat Research - Cisco Blogs
V2EX - 技术
V2EX - 技术
L
LINUX DO - 热门话题
Google DeepMind News
Google DeepMind News
Recorded Future
Recorded Future
S
Schneier on Security
I
InfoQ
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The GitHub Blog
The GitHub Blog
S
Security @ Cisco Blogs
O
OpenAI News
W
WeLiveSecurity
Vercel News
Vercel News
阮一峰的网络日志
阮一峰的网络日志
Simon Willison's Weblog
Simon Willison's Weblog
人人都是产品经理
人人都是产品经理
Cloudbric
Cloudbric
The Last Watchdog
The Last Watchdog
The Hacker News
The Hacker News
Google Online Security Blog
Google Online Security Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
GbyAI
GbyAI
NISL@THU
NISL@THU
T
Tailwind CSS Blog
V
Visual Studio Blog
PCI Perspectives
PCI Perspectives
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
D
DataBreaches.Net
B
Blog RSS Feed
N
News and Events Feed by Topic
N
News and Events Feed by Topic
H
Heimdal Security Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
腾讯CDC
Latest news
Latest news
V
Vulnerabilities – Threatpost
Hacker News: Ask HN
Hacker News: Ask HN
WordPress大学
WordPress大学
V
V2EX
aimingoo的专栏
aimingoo的专栏
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Register - Security
The Register - Security
Help Net Security
Help Net Security

博客园 - 码间留白

微信小程序审核总被拒?掌握这套“极简闭环”方案,轻松通关,亲测有效! uniapp项目鸿蒙适配,rebuild 后同步原生工程的三种方案与分层决策 uniapp项目适配鸿蒙端没有自定义基座,调试和打包怎么办? 鸿蒙纯血系统适配实战记录:uView + Vue3 的 uni-app 项目适配鸿蒙 NEXT,一天搞定主功能运行到鸿蒙纯血系统 AI辅助前端开发实战指南:高效落地、避坑沉淀全流程 uni-app 集成网易云信通话插件:首页通话监听一直只有第一次有日志?从监听丢失到重复上报的完整治理之路 即时通信 IM 踩坑实录:群主拉人入群后无法收消息?一文讲透 10007 错误码 AI时代插件开发新玩法,分分钟抽离封装插件,你需要做的只是发布到插件市场 PhotoShop CS6在win11系统中界面字体很小,通过兼容性设置强制高 DPI 缩放即可解决 不会后端不用愁,Strapi解你忧——使用Qoder生成前端开发框架,技术栈React18 + Vite + ReactRouter6 + Axios + vw 适配 + Ant Design Mobile + Zustand + Strapi5 不会后端不用愁,Strapi解你忧——Strapi后台数据表创建及API联调测试,实现查询文章及关联的分类、标签、评论等表连接查询 不会后端不用愁,Strapi解你忧——搭建博客系统常用数据表设计 windows11系统如何安装多个版本的node,新旧项目切换再也不需要卸载重装了 不会后端不用愁,Strapi解你忧——前端使用Strapi就能实现常见的数据增删查改,分页、排序、模糊查询、时间范围等,不要后端也能自己建站 不会后端不用愁,Strapi解你忧——Windows 11 本地完整部署 Strapi + MySQL 8 实操攻略,从下载到配置启动全指南 不会后端不用愁,Strapi解你忧——Strapi v5.4设置中文语言展示 win11电脑浏览器无法上网但微信正常使用,通常是因为‌DNS解析失败‌,手动设置可靠的公共DNS服务器地址来解决问题 高效能CI/CD流水线设计:Jenkins与Docker的7个关键优化点 从零搭建 Docker + Jenkins CI/CD 流水线:实现项目自动化构建与部署 AI辅助开发——阿里Qoder重构vue2项目到vue3后继续对项目页面加载速度进行优化 vue3项目本地环境网路请求初始连接过久导致接口请求时间过长的问题处理 微信小程序内嵌vue项目实现页面自定义分享完整示例代码 JavaScript 数组高阶用法汇总(含浏览器+微信小程序WebView支持) 京东小程序报错APP-SERVICE-SDK:setStorageSync:fail vue3+ts项目自定义全局函数调用正常但IDE报异常类型ComponentPublicInstance上不存在属性“$showLoading" vue项目实现Tab页面触底上拉切换下个Tab vue3+ts实现页面滚动位置的保存及恢复 到底是用vue2还是vue3好? css3过渡效果如何处理高度不确定的动态内容
uni-app 项目鸿蒙原生适配实录:微信授权登录从"点击无反应"到真机跑通,条件编译、SDK 配置与那些官方文档没说清的坑
码间留白 · 2026-07-21 · via 博客园 - 码间留白

uniapp App 在 HarmonyOS NEXT 上接入微信授权登录的完整方案,涵盖微信开放平台注册、原生工程配置、前端代码改造三层。适用于 uni-app(Vue3)+ 独立 DevEco 原生工程的现有工作流。


一、背景与根因

现有 src/pages/Login/index.vue 的微信登录逻辑被包裹在条件编译 // #ifdef APP-PLUS || APP 中。由于 APP-HARMONYAPP-PLUS 是并列关系(不是包含),这段代码在鸿蒙端编译时被整体剔除,导致鸿蒙上点击「微信授权登录」无任何反应。

此外,微信登录在鸿蒙端的 API 参数与 App 端不同:

  • onlyAuthorizeHarmonyOS 不支持
  • univerifyStyleHarmonyOS 不支持
  • scopes:鸿蒙端无需传

微信登录在 uni-app 鸿蒙端已官方支持(微信登录:HarmonyOS Next,需 HBuilderX ≥ 4.81)。


二、微信开放平台注册(鸿蒙平台)

微信鸿蒙平台不需要 Android 那种「签名指纹」,需要的是 Bundle ID + identifier(appIdentifier) 两项。

必填值

微信表单字段 来源
Bundle ID(包名) com.****** 原生工程 AppScope/app.json5app.bundleName
identifier(appIdentifier) ****** 签名描述文件 .p7b 中的 app-identifier 字段
AppID(移动应用) wx****** src/manifest.json 中配置一致,鸿蒙沿用同一 AppID

appIdentifier 提取方式:解析 C:\Users\<用户>\.ohos\config\default_app-harmony_*.p7b,读取其中的 "app-identifier"。正常情况下它与 AppGallery Connect(AGC)中该应用的「APP ID」一致,上架前建议到 AGC → 应用信息 二次核对。

添加步骤

因已有移动应用(含 iOS/Android),走「已有应用追加鸿蒙平台」,AppID 不变

  1. 登录微信开放平台 → 管理中心 → 移动应用 → 选中应用 → 详情 → 开发配置 → 编辑
  2. 在「平台信息」板块填入鸿蒙应用的 Bundle ID 与 identifier。
  3. 基础信息」上架状态:App 已上架 Android/iOS,必须选「已上架至少一个应用市场」并填写 App 备案号(工信部 ICP 备案);切勿选「未上架任何应用市场」,否则微信能力受限。
  4. 提交审核,通过后鸿蒙微信登录方可使用(微信收取一次审核费用)。

三、原生工程配置(DevEco 工程 E:\code_qnl\app-harmony

3.1 引入微信 OpenSDK

oh-package.json5dependencies 中加入:

"@tencent/wechat_open_sdk": "1.0.15"

3.2 配置 querySchemes 与 actions(uni-app 场景特有)

在 App module 的 entry/src/main/module.json5 中:

{
  "module": {
    // querySchemes 只配 weixin,切勿配 wxopensdk
    "querySchemes": ["weixin"],
    "abilities": [{
      "skills": [{
        // 微信回调需要的 action
        "actions": ["action.system.home", "wxentity.action.open"]
      }]
    }]
  }
}

⚠️ 与微信官方原生 Demo 的差异:微信官方文档要求同时配置 weixinwxopensdk。但本项目登录走 uni-app 鸿蒙运行时,uni-app 官方实测配置 wxopensdk 会导致登录无回调,因此只配 weixin,以 uni-app 规则为准。


四、前端代码改造(src/pages/Login/index.vue

保持现有 // #ifdef APP-PLUS || APP 分支不变,新增独立的 APP-HARMONY 分支(因参数不同,不能与 APP-PLUS 合并):

// #ifdef APP-HARMONY
isWeixinLogging.value = true;
uni.login({
  provider: 'weixin',
  // 注意:鸿蒙不支持 onlyAuthorize / univerifyStyle / scopes
  success: async (weixinLoginRes) => {
    try {
      // 鸿蒙端授权码可能位于 code 或 authResult.code,做兼容取值
      const code = weixinLoginRes.code || weixinLoginRes?.authResult?.code;
      if (!code) throw new Error('获取微信授权code失败');
      uni.showLoading({ title: '微信登录中...' });
      weixinLoginCode.value = code;
      const wxLoginRes = await loginByWeixin({ code, type: 2 });
      await afterAppLogin(wxLoginRes);
    } catch (error) {
      if (error.code === '-7755') {
        navigateTo({ url: RouteName.BindMobile, props: { weixinLoginCode: weixinLoginCode.value } });
      } else {
        uni.showToast({ title: error.message ?? error ?? '微信登录失败', icon: 'none' });
      }
    } finally {
      uni.hideLoading();
      isWeixinLogging.value = false;
    }
  },
  fail: (err) => {
    uni.hideLoading();
    isWeixinLogging.value = false;
    const errorMsg = err.errMsg?.includes('cancel') ? '您取消了微信授权,请重新尝试' : '微信授权失败,请稍后再试';
    uni.showToast({ title: errorMsg, icon: 'none' });
    console.error('鸿蒙微信登录授权失败:', err);
  },
});
// #endif

关键差异:去掉 onlyAuthorizescopes;鸿蒙返回结构可能不同,用 code || authResult?.code 兼容取值(首次真机联调建议 console.log(weixinLoginRes) 确认字段)。后续 loginByWeixinafterAppLogin-7755 绑定手机号跳转逻辑全部复用,无需改后端。


五、前置条件与验证

  1. HBuilderX ≥ 4.81(微信登录鸿蒙支持起始版本)。
  2. 签名/证书:当前使用调试证书(Development),仅供调试期使用。上架华为应用市场需 release 发布证书,届时 appIdentifier 仍以 AGC 中该应用的 APP ID 为准。
  3. 调试限制:鸿蒙端无自定义基座,需全量编译安装 HAP 到真机验证(模拟器无法测微信)。
  4. manifest 独立性src/manifest.jsonweixin__platform__: ["ios","android"] 是 App 端配置,鸿蒙走原生工程 module.json5,两者独立、互不影响。

六、常见报错

报错 原因 处理
login:fail Provider not found 鸿蒙未接入微信 SDK / 未配置 querySchemes 完成第三章原生配置
Bundle ID 信息校验不通过 微信开放平台审核中/被驳回 等审核通过;通过后仍报错则核对 appid+identifier+bundleId 是否匹配
第三方应用信息校验失败 AppID 传错 或 identifier 不一致 确认传的是移动应用 AppID(非小程序 AppID),核对 identifier
点击微信登录无反应 条件编译未覆盖 APP-HARMONY 按第四章新增鸿蒙分支