更新记录

1.0.0(2026-04-09)

版本1.0.0 实现android手机端唤起微信客户端微信登录并获取微信返回Code


平台兼容性

uni-app(5.06)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
× × - 11.0 × ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × - - - -

uni-app x(5.06)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × 11.0 × × ×

codingx-we ch at

codingx-we ch at 是一个面向 uni-app / uni-app x Android 平台的 UTS 微信登录插件,当前主要提供以下能力:

  • 注册 App 到微信
  • 检测微信是否安装
  • 发起微信授权登录
  • 读取微信登录回调结果
  • 一键发起微信登录并等待返回结果

当前插件仅支持:

  • App-Android
  • uni-app
  • uni-app x

当前插件暂不支持:

  • iOS
  • Harmony
  • Web
  • 微信小程序

1. 功能概览

插件导出的主要方法如下:

  • registerApp
  • isWXAppInstalled
  • sendAuthReq
  • consumeAuthCallback
  • oneKeyLogin

推荐优先使用:

  • oneKeyLogin

2. 使用前准备

在接入本插件前,请先完成微信开放平台的准备工作。

2.1 开通微信开放平台移动应用

你需要在微信开放平台完成以下操作:

  1. 注册并认证微信开放平台账号
  2. 创建移动应用
  3. 填写 Android 应用信息
  4. 提交审核并通过
  5. 获取你的移动应用 AppID

如果你没有完成这一步,插件即使能正常调用,也无法完成真实登录。

2.2 确认 Android 应用信息一致

微信开放平台里登记的信息需要和你最终安装到手机上的 Android 应用一致,重点包括:

  • 包名
  • 签名
  • 应用已审核通过

如果包名或签名不一致,常见现象包括:

  • 拉不起微信
  • 回调失败
  • 返回签名验证错误

2.3 确认微信客户端已安装

微信登录是基于微信客户端拉起授权完成的,所以测试手机必须安装微信。


3. 安装插件

将插件放入项目目录:

uni_modules/codingx-we chat

插件安装后,目录结构中关键文件如下:

uni_modules/codingx-we chat/
├─ package.json
├─ readme.md
└─ utssdk/
   ├─ interface.uts
   ├─ unierror.uts
   └─ app-android/
      ├─ config.json
      ├─ index.uts
      ├─ AndroidManifest.xml
      ├─ CodingxWe chatWXEntryActivity.kt
      ├─ We chatAuthCallbackResult.kt
      └─ We chatAuthCallbackStore.kt

4. 运行前必须知道的限制

4.1 不能直接用标准基座测试微信 SDK

这是最重要的一点。

本插件在 utssdk/app-android/config.json 里通过 dependencies 引入了微信 Android OpenSDK:

{
    "minSdkVersion": "21",
    "dependencies": ["com.tencent.mm.opensdk:we chat-sdk-android:+"]
}

这意味着:

  • 编译时可以识别微信类
  • 但标准基座不一定包含这个三方 SDK
  • 真机运行时如果还是用标准基座,可能报错:
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/tencent/mm/opensdk/openapi/WXAPIFactory;

4.2 正确的调试方式

调试本插件时,请使用以下方式之一:

  1. Android 自定义基座
  2. 正式打包 APK/AAB

不建议使用:

  1. 标准基座 直接测试微信登录

5. 第二步:在页面中引入插件

注意:

  • 必须从插件根目录引入
  • 不要直接引入到 index.uts

错误写法:

import { oneKeyLogin } from '@/uni_modules/codingx-we chat/utssdk/app-android/index.uts'

正确写法:

import { oneKeyLogin } from '@/uni_modules/codingx-we chat'

5.1 示例代码

import { oneKeyLogin } from '@/uni_modules/codingx-we chat'
// 相关weixin的名称需要去除空格后使用(原因:平台有敏感词过滤,所以我在名称间加了空格)
function handleAppWe chatLogin() : void {
  oneKeyLogin({
    appid: '你的微信开放平台AppID',
    scope: 'snsapi_userinfo',
    state: 'we chat_login',
    timeout: 60000,
    success: (res) => {
      if (res.errCode == 0 && res.code != null) {
        console.log('微信登录成功 code=' + res.code)
        console.log('state=' + (res.state ?? ''))
        return
      }

      console.log('微信登录返回 errCode=' + res.errCode)
      console.log('微信登录返回 errMsg=' + (res.errMsg ?? ''))
    },
    fail: (err) => {
      console.log('插件调用失败 errCode=' + err.errCode)
      console.log('插件调用失败 errMsg=' + err.errMsg)
    },
    complete: (res) => {
      console.log('一键登录 complete', res)
    }
  })
}

5.2 返回结果说明

success 返回的是微信授权结果:

type OneKeyLoginResult = {
  code : string | null,
  state : string | null,
  errCode : number,
  errMsg : string | null,
  lang : string | null,
  country : string | null
}

解释如下:

  • code:后端换取微信登录态的关键参数
  • state:你发起登录时携带的状态值
  • errCode:微信返回状态码
  • errMsg:微信返回错误信息
  • lang:微信客户端语言
  • country:微信用户国家/地区

5.3 结果判断规则

建议这样判断:

if (res.errCode == 0 && res.code != null) {
  // 登录成功
} else {
  // 用户取消 / 拒绝授权 / 其他微信返回错误
}

常见微信登录返回码:

  • 0:用户同意授权
  • -2:用户取消
  • -4:用户拒绝授权

隐私、权限声明

1. 本插件需要申请的系统权限列表:

android.permission.QUERY_ALL_PACKAGES

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。