更新记录

0.2.7(2026-05-08)

  • 精简插件说明文档,移除面向插件市场后台的填写建议,避免影响购买者阅读接入文档。
  • 插件标签数量调整为 5 个以内,符合插件市场限制。

0.2.6(2026-05-08)

  • 将插件内 iOS OAuth 配置恢复为带注释的占位值,避免发布时内置调试工程私有 Client ID。
  • Demo 页面改为提示用户到插件 Info.plist 配置 iOS Client ID 与反向 Client ID。

平台兼容性

uni-app(4.76)

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

uni-app x(4.76)

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

zhuanz-google-login

Android 与 iOS 原生 Google 授权登录 UTS 插件,适用于 uni-app 和 uni-app x 的 App 端。Android 使用 Google Sign-In 兼容方案,iOS 使用 GoogleSignIn SDK。

功能

能力 Android iOS
Google 登录 需自定义基座接入 Google Play services 需 CocoaPods 和自定义基座接入 GoogleSignIn
Google 退出登录 支持 支持
ID Token 返回 支持 支持
基础用户信息 支持 支持

兼容性版本

项目 最低版本
HBuilderX 4.76
uni-app 4.76
uni-app x 4.76
Android API 21
iOS 12.0

平台兼容

平台 支持
uni-app App Android 支持
uni-app x App Android 支持
uni-app App iOS 支持
uni-app x App iOS 支持
H5 不支持
小程序 不支持
HarmonyOS 不支持

接入前准备

  1. 在 Google Cloud Console 创建 Web OAuth 2.0 Client ID,填入 serverClientId
  2. Android 还需要单独创建 Android OAuth Client ID,并配置应用包名和 SHA-1 证书指纹。
  3. iOS 需要创建 iOS OAuth Client ID,并把 iOS Client ID 与 URL Scheme 写入插件 Info.plist
  4. 使用自定义基座或正式包测试,标准基座无法包含 Google 原生登录依赖。

参数配置清单

参数 从哪里获取 填写位置 是否写入 App
Web OAuth Client ID Google Auth Platform 的 Web 客户端 login({ serverClientId })
Android Package name Android 应用包名,或插件运行日志里的 packageName Google Auth Platform 的 Android 客户端
Android SHA-1 自定义基座或正式包签名,或插件运行日志里的 sha1 Google Auth Platform 的 Android 客户端
Android OAuth Client ID Google Auth Platform 的 Android 客户端 仅后台识别 Android 应用
iOS Client ID Google Auth Platform 的 iOS 客户端 utssdk/app-ios/Info.plistGIDClientID
iOS URL Scheme iOS 客户端提供的反向 Client ID utssdk/app-ios/Info.plistCFBundleURLSchemes
客户端密钥 Google Auth Platform 的 Web 客户端 仅服务端保存

Android 调用时只传 Web OAuth Client ID:

google.login({
  serverClientId: 'YOUR_WEB_CLIENT_ID.apps.googleusercontent.com',
  useLegacyLogin: true,
  success: (res) => {},
  fail: (err) => {},
  complete: null
})

Android OAuth Client ID 不传给插件。它只需要在 Google 后台与正确的包名、SHA-1 绑定。

Android 修改或首次接入后,需要重新制作并安装自定义基座。若运行日志里四个 com.google.android.gms... 类都是 MISSING,说明手机上仍是旧基座或基座没有把 play-services-auth 打进去。建议先卸载手机上的旧自定义基座,再制作并安装新基座。

本调试工程还在根级 app-android/config.json 中重复声明了 Google Play services 依赖,用于确保自定义基座主模块也能拉取 play-services-auth

若已能唤起 Google 登录但返回 DEVELOPER_ERROR(10),重点看控制台打印的:

[zhuanz-google-login][Android] app identity=packageName=...; sha1=...

把这里的 packageNamesha1 原样填到 Google Cloud Console 的 Android OAuth Client 中。App 代码里的 serverClientId 仍然填写 Web OAuth Client ID,不要填写 Android Client ID,也不要把客户端密钥写入 App。

iOS 配置

iOS 端需要本机安装 CocoaPods,并使用自定义基座或正式包运行。编辑:

uni_modules/zhuanz-google-login/utssdk/app-ios/Info.plist

把下面两个值改成 Google Auth Platform 中 iOS OAuth 客户端提供的真实值:

<key>GIDClientID</key>
<string>YOUR_IOS_CLIENT_ID.apps.googleusercontent.com</string>
<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>com.googleusercontent.apps.YOUR_IOS_CLIENT_ID</string>
    </array>
  </dict>
</array>

CFBundleURLSchemes 填反向 Client ID。iOS 登录回调由插件内的 UTSiOSHookProxy 处理。

使用示例

import { getZGoogleLogin } from '@/uni_modules/zhuanz-google-login'

const google = getZGoogleLogin()

google.login({
  serverClientId: 'YOUR_WEB_CLIENT_ID.apps.googleusercontent.com',
  success: (res) => {
    console.log(res.idToken)
    console.log(res.email)
  },
  fail: (err) => {
    console.log(err.errCode, err.errMsg)
  },
  complete: null
})

Android 当前使用 Google Sign-In 兼容方案,示例里保留 useLegacyLogin 参数,便于和已有项目代码保持一致:

google.login({
  serverClientId: 'YOUR_WEB_CLIENT_ID.apps.googleusercontent.com',
  useLegacyLogin: true,
  success: (res) => {},
  fail: (err) => {},
  complete: null
})

退出登录:

google.logout({
  success: () => {},
  fail: (err) => {},
  complete: null
})

返回字段

字段 说明
idToken Google ID Token,建议发给后端校验
accessToken iOS 通常可返回,Android Google Sign-In 通常为空
serverAuthCode 服务端授权码,部分登录方式可返回
userId Google 用户 ID
displayName 用户昵称
givenName
familyName
email 邮箱
photoUrl 头像地址

错误码

错误码 说明
101 系统环境异常,无法发起登录
102 serverClientId 为空
103 返回凭据不是 Google ID Token
104 凭据不可用,常见原因是包名、签名、OAuth 配置不一致
105 Google Play 服务或登录组件不可用
106 用户取消登录
108 登录结果为空
109 用户信息为空
110 缺少 ID Token
202 当前没有可退出的登录态
901 当前平台不支持
999 其他登录失败

注意事项

  • serverClientId 建议使用 Web OAuth Client ID,后端校验 ID Token 时也使用同一 Client ID。
  • 客户端密钥只允许放在服务端,不能内置在 App、前端页面或插件源码中。
  • OAuth 权限请求页面处于测试状态时,只有测试用户列表里的 Google 账号可以完成授权。
  • Android 真机需安装 Google Play 服务。
  • Android 调试包和正式包的 SHA-1 往往不同,需要分别配置。
  • iOS 需要安装 CocoaPods,并在自定义基座中接入 GoogleSignIn Pod。

隐私、权限声明

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

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

仅返回 Google 授权结果,插件本身不采集、不存储、不上传用户数据

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

暂无用户评论。