HarmonyOS鸿蒙Next中我们项目有用到Google Play Services Auth的SDK,版本:20.2.0,用来做Google登录,请问鸿蒙版本支持吗?

HarmonyOS鸿蒙Next中我们项目有用到Google Play Services Auth的SDK,版本:20.2.0,用来做Google登录,请问鸿蒙版本支持吗?

【问题描述】:我们项目有用到Google Play Services Auth的SDK, 版本:20.2.0,用来做Google 登录,请问鸿蒙版本支持吗?

【版本信息】:20.2.0

9 回复

背景知识:

Google Play Services Auth:20.2.0 适用于鸿蒙(HarmonyOS 2~4)的设备,Harmony5.0以后就不再支持了。

更多关于HarmonyOS鸿蒙Next中我们项目有用到Google Play Services Auth的SDK,版本:20.2.0,用来做Google登录,请问鸿蒙版本支持吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


Google Play Services Auth 20.2.0 依赖 GMS 和 Android 运行时,原生 HarmonyOS NEXT HAP 不能直接集成。若业务必须保留 Google 登录,建议走标准 OAuth2/Web 授权流程,由服务端换 token;国内生态可考虑 Account Kit。

鸿蒙Next(5.0后)已移除AOSP,Google Play Services Auth依赖的基础没有了,next不支持。
Next之前带AOSP的鸿蒙支持Android应用的可以。

Google Service Auth 主要是Google 应用

HarmonyOS NEXT应用 可能是无法使用

如果可以使用的话,仅限部分安卓应用(类似出境易内)

如果你们现在做的是:

HarmonyOS NEXT / 原生鸿蒙 HAP

那么:

Google Play Services Auth 20.2.0

基本不支持直接使用。

因为这个 SDK 本质依赖:

Google Play Services(GMS)

核心包就是:

com.google.android.gms

例如:

  • GoogleSignInClient
  • GoogleApiClient
  • Credential Manager
  • Google Identity Services

这些都属于:

Android + GMS 生态

官方文档本身也明确说明:

Google Sign-In API 是 Google Play services 的一部分。

而:

HarmonyOS NEXT:

  • 不支持 APK Runtime
  • 不包含 GMS Framework
  • 不支持 Google Play Services
  • 没有 com.google.android.gms 环境

所以:

Google Play Services Auth SDK 无法直接在 ArkTS/HAP 中运行。

——————————

这里要区分两个场景:

场景1:HarmonyOS 4.x(兼容安卓)

如果你们还是:

HarmonyOS 4.x

并且:

  • 安卓APK运行
  • 卓易通
  • Android兼容模式

那:

Google Play Services Auth

理论上还能工作。

前提:

设备本身有 GMS。

例如:

  • 海外版华为设备
  • 安装了GMS
  • GBox/Gspace
  • MicroG

否则:

Google 登录大概率会失败。

——————————

场景2:HarmonyOS NEXT(原生鸿蒙)

这个才是关键。

如果你们现在目标是:

原生鸿蒙化

那:

Google Play Services Auth 20.2.0

不能直接迁移。

因为:

它不是:

纯Java库

而是:

强依赖 Google Play Services Runtime

——————————

你们现在真正应该做的是:

不要继续依赖:

GoogleSignInClient

而改成:

OAuth 2.0 Web 登录方案

这才是 HarmonyOS 正确路线。

——————————

推荐方案(最现实)

方案A:Web OAuth(推荐)

直接使用:

Google OAuth 2.0

标准网页授权。

流程:

HarmonyOS
   ↓
ArkWeb/Web组件
   ↓
Google OAuth网页
   ↓
授权回调
   ↓
拿到Token

也就是:

不用:

Google Play Services SDK

而是:

直接走:

OAuth网页登录

这是目前最现实方案。

——————————

优点:

  • 不依赖 GMS
  • 不依赖 Google Play Services
  • HarmonyOS 可实现
  • iOS/鸿蒙/PC 可统一
  • 后端更容易统一

——————————

缺点:

体验不如原生 SDK。

例如:

  • 需要跳网页
  • 不是 One Tap
  • 没有系统账号联动

但:

这是 HarmonyOS 下最稳方案。

——————————

推荐实现方式:

使用:

Authorization Code Flow

不要用:

Implicit Flow

现代 Google OAuth 官方也更推荐:

PKCE

方案。

Google 官方文档:

Google Identity Services

——————————

HarmonyOS 里实现:

通常:

Web组件 + Deeplink回调

例如:

myapp://oauth/callback

授权成功后:

Google 回跳应用。

——————————

另外一个现实问题:

即使你强行移植 Android SDK:

很多 HarmonyOS NEXT 设备:

本身:

没有 GMS

所以:

即使编译过去:

登录流程也会挂。

因为:

Google 登录依赖:

  • Google Play Services
  • Google Account
  • Google Identity Runtime

而不是:

单纯 SDK。

——————————

还有一个重要现实:

国内 HarmonyOS 设备:

很多情况下:

Google OAuth 本身网络都不可达

所以:

即使 Web OAuth,

国内网络环境也要考虑:

  • VPN
  • 海外网络
  • DNS
  • Google域名访问

这点一定要提前评估。

——————————

最后给你一个明确结论:

如果你们目标:

HarmonyOS NEXT 原生化

那么:

Google Play Services Auth 20.2.0

不能直接使用。

推荐替代方案:

Google OAuth 2.0 Web授权

而不是:

GoogleSignInClient / Google Play Services

这是目前鸿蒙生态里最现实、最稳定的 Google 登录方案。

目前鸿蒙应用无法直接支持 Google Play Services Auth 的SDK; 主要是在于它是Google为Android生态系统提供的专有服务,其SDK依赖于特定的Google移动服务(GMS)框架,而HarmonyOS没有此框架;

  1. 鸿蒙应用可以使用它自带的 华为账号服务 去处理登录
  2. 或者可以试试通过web方式集成google SDK去实现登录

Google Play Services Auth依赖GMS服务,Next上已经移除掉了,没有办法内置,具体可能要问Google Play了,但是估计多半不会做

不过可以使用华为的一键登录,或者用网页端验证这种,之前的登录信息可以引导用户迁移或者后台关联

HarmonyOS 鸿蒙 Next 不支持 Google Play Services 及其 SDK。Google Play Services Auth(含 20.2.0 版本)依赖 Google 移动服务(GMS),而鸿蒙系统不含 GMS 框架,因此无法直接运行。需要在鸿蒙环境中寻找替代的 Google 登录方案。

HarmonyOS Next 完全基于自研鸿蒙内核,不再兼容 Android 生态,因此无法使用 Google Play Services Auth SDK(包括 20.2.0 版本),该 SDK 依赖的 GMS 服务在 HarmonyOS Next 上不可用。

如需实现 Google 登录,必须改用 Google 提供的标准 OAuth 2.0 Web 授权流程,通过鸿蒙的 Web 组件(WebView)进行。基本步骤:

  1. 在 Google Cloud Console 创建 OAuth 2.0 Web 客户端凭据,重定向 URI 可自定义(例如 https://localhost/oauth)。
  2. 在应用中用 Web 组件加载 Google 登录页:https://accounts.google.com/o/oauth2/v2/auth?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&response_type=code&scope=openid%20email%20profile
  3. 监听 onUrlLoadIntercept 拦截重定向回调,从 URL 中提取授权码 code,并用它通过后台服务器端换取 access_token 和用户信息。

注意,完整流程需要后端配合进行 token 交换,前端不应直接处理 client_secret

回到顶部