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

推荐订阅源

Cisco Talos Blog
Cisco Talos Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
博客园 - Franky
Hugging Face - Blog
Hugging Face - Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
博客园 - 司徒正美
N
News and Events Feed by Topic
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
WordPress大学
WordPress大学
博客园 - 三生石上(FineUI控件)
Help Net Security
Help Net Security
N
News and Events Feed by Topic
O
OpenAI News
L
LangChain Blog
F
Full Disclosure
A
About on SuperTechFans
The GitHub Blog
The GitHub Blog
GbyAI
GbyAI
Cloudbric
Cloudbric
W
WeLiveSecurity
Application and Cybersecurity Blog
Application and Cybersecurity Blog
罗磊的独立博客
Attack and Defense Labs
Attack and Defense Labs
PCI Perspectives
PCI Perspectives
TaoSecurity Blog
TaoSecurity Blog
AI
AI
有赞技术团队
有赞技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Apple Machine Learning Research
Apple Machine Learning Research
C
CERT Recently Published Vulnerability Notes
T
The Exploit Database - CXSecurity.com
T
Threatpost
P
Palo Alto Networks Blog
G
GRAHAM CLULEY
Last Week in AI
Last Week in AI
雷峰网
雷峰网
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Cyber Attacks, Cyber Crime and Cyber Security
博客园 - 聂微东
P
Proofpoint News Feed
Latest news
Latest news
S
SegmentFault 最新的问题
J
Java Code Geeks
T
Threat Research - Cisco Blogs
H
Help Net Security
P
Privacy International News Feed

博客园 - 码间留白

微信小程序审核总被拒?掌握这套“极简闭环”方案,轻松通关,亲测有效! 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 按第四章新增鸿蒙分支