更新记录
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 | 不支持 |
接入前准备
- 在 Google Cloud Console 创建 Web OAuth 2.0 Client ID,填入
serverClientId。 - Android 还需要单独创建 Android OAuth Client ID,并配置应用包名和 SHA-1 证书指纹。
- iOS 需要创建 iOS OAuth Client ID,并把 iOS Client ID 与 URL Scheme 写入插件
Info.plist。 - 使用自定义基座或正式包测试,标准基座无法包含 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.plist 的 GIDClientID |
是 |
| iOS URL Scheme | iOS 客户端提供的反向 Client ID | utssdk/app-ios/Info.plist 的 CFBundleURLSchemes |
是 |
| 客户端密钥 | 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=...
把这里的 packageName 和 sha1 原样填到 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 | 姓 |
| 邮箱 | |
| 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。

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 17
赞赏 0
下载 11839356
赞赏 1911
赞赏
京公网安备:11010802035340号