@capawesome/capacitor-google-sign-in

中文文档
0.1.4发布于 2026/09/02MITTypeScriptESM + CJS零依赖构建来源已验证近 30 天下载 9.7万

在Android,iOS,和Web上与Google签约的电容插件.

中文使用文档
文档目录30 节
  1. 特征
  2. 使用大小写
  3. 兼容性
  4. 指南
  5. 安装
  6. 机器人
  7. iOS系统
  8. 配置
  9. 使用量
  10. 初始化插件
  11. 在用户中签名
  12. 完成网络上的登录流程
  13. 签名用户
  14. API 密码
  15. 手柄重定向调用( C)
  16. 初始化(...)
  17. 签名IN(...)
  18. 符号输出( C)
  19. 接口
  20. 警卫
  21. 财务问题
  22. 这个插件与其他Google Sign-In插件有什么区别?
  23. 为什么我需要Android和iOS上的网络客户端ID?
  24. 为什么 signIn 承诺永远不要在网络上解决?
  25. 我怎么才能得到谷歌API的登录符??
  26. 为什么Android的签入流量在选择账户后就失败了?
  27. 相关插件
  28. 通讯
  29. 更改日志
  30. 许可证

Google 签名插件

用 Google 登录的非官方 Capacitor 插件。 [^1]

特征

Capacitor Google Sign-In插件是Capacitor应用程序最完整的Google认证解决方案之一. 以下是一些关键特征:

  • 🖥️ 跨平台:支持Android,iOS,和Web.
  • 🔐 认证:在用户中用他们的Google账户签名,并获得ID标志(JWT).
  • 🔑 授权:可选地请求 OAuth 瞄准镜以获取访问令牌和服务器认证码.
  • 👤 用户配置:检索用户的电子邮件,显示姓名,配置图片等.
  • 🛡️ 诺斯支持:在Android和Web上使用自定义的非ce来防止回放攻击.
  • 🪶 轻巧:只有一个依赖和零个不必要出血.
  • 🚨 错误代码:提供详细的出错代码,以更好地处理出错.
  • 🤝 兼容性: 与 苹果签名 - 单位 财务报告和审定财务报表 奥奥特 插件 .
  • 📦 可可花和SPM:支持CocoaPods和Swift软件包管理器用于iOS.
  • 🔁 最新数据:总是支持最新的Capacitor版本.

缺少一个功能? 刚刚 打开一个问题 我们看看!

使用大小写

Google Sign-In插件通常在用户应当以其现有的Google账户签名的地方使用,例如:

  • 社会登录:让用户用他们的Google账户在您的应用程序上签名,而不是创建新的密码.
  • 后端认证: 将ID标志(JWT)发送到后端验证用户身份.
  • 谷歌 API 访问: 请 OAuth 范围代表用户获得访问令牌以访问Google API.
  • 服务器端 API 访问: 在您的后端交换服务器认证码, 用于访问和刷新令牌 .
  • 配置文件预填: 使用用户的电子邮件, 显示名称和配置图片, 在您的应用程序中预先填入他们的配置 .

兼容性

插件版本电容版本状态
0.1.x (中文(简体) )>=8.x.x积极支持

指南

安装

你可以用我们的 AI 辅助设置 以安装插件. 添加数据 超级技能 至您的 AI 工具,使用以下命令:

npx skills add capawesome-team/skills --skill capacitor-plugins

然后使用下列提示:

 Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-google-sign-in` plugin in my project.

如果你喜欢 手动设置,通过运行以下命令来安装插件,并遵循下面的平台特定指令:

npm install @capawesome/capacitor-google-sign-in
npx cap sync

在所有的平台上,你的品牌必须是 已核实 您的应用程序名称将使用 Google 同意屏幕显示在标志上 .

机器人

创建一个 机器人 用户端 谷歌云控台 在与您的网络客户端相同的工程中 :

  • 软件包名称:您的应用程序的应用程序ID(例如. com.example.app),定义如下: android/app/build.gradle。 。 。 .
  • SHA-1 证书指纹:签名应用的证书的指纹.

请注意:Android客户端ID从未传递给插件,因为 initialize(...) 总是收到 网络 客户身份 Android客户端必须仍然存在并匹配应用,否则登录入流失败.

需要使用的 SHA-1 指纹取决于应用程序的签名方式 :

  • 本地调试构建:调试键盘的指纹. 打印出来 keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android。 。 。 .
  • 通过 Google Play 分发的构建: 指纹 应用程序签名密钥,而不是上传密钥。 在 Google 游戏控制台下找到它 Test and release › Setup › App signing。 。 。 .

为您想要支持的每个指纹添加 OAuth 客户端 。 缺失的指纹是导致登录流失败的最常见原因.

变量

此插件将使用以下工程变量( 在您的应用程序中定义) variables.gradle 文件名 :

  • $androidxCredentialsVersion 版本 androidx.credentials:credentials (默认 : 1.5.0(中文(简体) )
  • $googleIdVersion 版本 com.google.android.libraries.identity.googleid:googleid (默认 : 1.1.1(中文(简体) )
  • $playServicesAuthVersion 版本 com.google.android.gms:play-services-auth (默认 : 21.5.0(中文(简体) )

iOS系统

添加数据 GIDClientID 键 ios/App/App/Info.plist google Cloud Console 的 iOS 客户端标识文件 :

<key>GIDClientID</key>
<string>YOUR_IOS_CLIENT_ID</string>

您还需要为您的 iOS 客户端ID 添加 URL 方案 ios/App/App/Info.plist 文件 :

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

替换 YOUR_IOS_CLIENT_ID 与来自Google Cloud Console的倒置客户端ID(例如. com.googleusercontent.apps.123456789-abc) (中文(简体) ).

配置

此插件不需要配置 .

使用量

以下示例显示如何初始化插件,在用户中签名和签名,并完成Web上的登录流.

初始化插件

打电话 initialize(...) 在所有其他方法之前 这个 clientId 一定是个 网络客户端ID 从Google Cloud Console在所有平台上,甚至在Android和iOS上. 可选规定 scopes 以请求授权,从而在登录结果中允许访问令牌和服务器认证码:

import { GoogleSignIn } from '@capawesome/capacitor-google-sign-in';

const initialize = async () => {
  await GoogleSignIn.initialize({
    clientId: '123456789-abc.apps.googleusercontent.com',
    scopes: ['https://www.googleapis.com/auth/userinfo.profile'],
  });
};

在用户中签名

启动"Google Sign-In"流程并取回"ID"(JWT)和用户配置. 注意在网络上

import { ErrorCode, GoogleSignIn } from '@capawesome/capacitor-google-sign-in';

const signIn = async () => {
  try {
    const result = await GoogleSignIn.signIn();
    console.log(result.idToken);
    console.log(result.userId);
    console.log(result.email);
    console.log(result.displayName);
    console.log(result.accessToken);
    console.log(result.serverAuthCode);
  } catch (error) {
    if (error.code === ErrorCode.SignInCanceled) {
      console.log('The user canceled the sign-in flow.');
    } else if (error.code === ErrorCode.NoCredentialAvailable) {
      console.log('No Google account is available on this device.');
    } else if (error.code === ErrorCode.ProviderConfigurationError) {
      console.log('Google Play services is not available or not up to date.');
    } else {
      console.log('Another error occurred:', error);
    }
  }
};

完成网络上的登录流程

在网络上,应用程序被重定向回 redirectUrl 用户签名后。 打电话 handleRedirectCallback() 在那里可以将授权代码交换为符号并完成登录流. 仅在网上提供 :

import { GoogleSignIn } from '@capawesome/capacitor-google-sign-in';
import { Capacitor } from '@capacitor/core';

const handleRedirectCallback = async () => {
  if (Capacitor.getPlatform() !== 'web') {
    return;
  }
  const result = await GoogleSignIn.handleRedirectCallback();
  console.log(result.idToken);
  console.log(result.userId);
  console.log(result.email);
  console.log(result.displayName);
  console.log(result.accessToken);
  console.log(result.serverAuthCode);
};

签名用户

签名当前用户 :

import { GoogleSignIn } from '@capawesome/capacitor-google-sign-in';

const signOut = async () => {
  await GoogleSignIn.signOut();
};

API 密码

手柄重定向调用( C)

handleRedirectCallback() => Promise<SignInResult>

处理 OAuth 提供者的重定向调用.

当应用程序从 OAuth 提供者重定向回时,必须调用这种方法 . 它将授权代码交换为令牌并返回登录结果.

仅在Web上提供.

回返情况: Promise<SignInResult>

自: 0.1.0 (中文(简体) )


初始化(...)

initialize(options: InitializeOptions) => Promise<void>

初始化Google Sign-In插件.

这种方法必须在所有其他方法之前使用一次.

参数类型
optionsInitializeOptions

自: 0.1.0 (中文(简体) )


签名IN(...)

signIn(options?: SignInOptions | undefined) => Promise<SignInResult>

启动Google Sign-In流量.

在Web上,这可以重定向到Google OAuth的授权页面. 承诺永远不会在网络上解决。 用户签名后, 应用程序将重定向回 redirectUrl。 。 。 . 使用 handleRedirectCallback() 要完成登录流程.

参数类型
optionsSignInOptions

回返情况: Promise<SignInResult>

自: 0.1.0 (中文(简体) )


符号输出( C)

signOut() => Promise<void>

签名当前用户 .

在Android上,这清除了认证状态. 在iOS上,这个标志出自Google Sign-In SDK. 在网络上,这是不开放的.

自: 0.1.0 (中文(简体) )


接口

签名结果

Prop类型说明自兹
idTokenstring由Google返回的ID标志 (JWT). 此符号可以发送到您的后端进行校验 .0.1.0 (中文(简体) )
userIdstring用户Google账户的独特标识符.0.1.0 (中文(简体) )
emailstring | null用户的电子邮件地址.0.1.0 (中文(简体) )
displayNamestring | null用户的显示名(全名).0.1.0 (中文(简体) )
givenNamestring | null用户的给定名 (名).0.1.0 (中文(简体) )
familyNamestring | null用户姓(上名).0.1.0 (中文(简体) )
imageUrlstring | null用户配置图片的 URL.0.1.0 (中文(简体) )
accessTokenstring | null访问 Google API 的访问符 。 仅在 scopes 配置为 initialize()。 。 。 .0.1.0 (中文(简体) )
serverAuthCodestring | null在您的后端可以交换的服务器认证代码, 用于访问和刷新令牌 。 只有在Android和iOS上可以使用时 scopes 配置为 initialize()。 。 。 .0.1.0 (中文(简体) )

初始化选项

Prop类型说明自兹
clientIdstring来自Google Cloud Console的网络客户端ID. 在Android上,这个作为服务器客户端ID传递给证书管理器API和授权客户端API. 在iOS上,它被用作Google Sign-In SDK的服务器客户端ID. 在Web上,这个用于初始化Google Sign-In JavaScript API. 请注意:这必须是所有平台,甚至Android和iOS上的网络客户端ID.0.1.0 (中文(简体) )
redirectUrlstring在 OAuth 流后重定向到的 URL 。 仅在Web上提供.0.1.0 (中文(简体) )
scopesstring[]OAuth 范围请求 。 如果提供,插件除了认证外还会请求授权. 这样可以 accessToken 财务报告和审定财务报表 serverAuthCode 在报到结果.0.1.0 (中文(简体) )

签名选项

Prop类型说明自兹
noncestring防止重放攻击的无能 仅在Android和Web上提供.0.1.0 (中文(简体) )

警卫

此插件处理 OAuth 流并返回给您的应用程序的符号 。 为保证融入安全,请注意以下情况:

  • 需要服务器侧符号验证 . 这个 idToken (JWT)为: 没有 验证客户端。 您的后端 必须 使用 谷歌的公用钥匙 在信任任何权利要求之前(例如:. userId, (中文(简体) ), email) (中文(简体) ). 在没有服务器端验证的情况下,从不使用客户端符号数据进行授权决定.
  • 交换 serverAuthCode 在你的后门. 如果使用瞄准镜,请发送 serverAuthCode 到你的后端,并在那里交换它 访问和刷新符号。 永远不要交换客户端 因为这会暴露你的客户秘密.

财务问题

这个插件与其他Google Sign-In插件有什么区别?

这个插件是为Google Sign-In而专门设计的,并专注于提供具有最新平台功能的干净而现代的API. 以下是一些关键差异:

  • 跨平台:支持Android,iOS,和Web.
  • 轻巧: 无不必要的依赖。 只是Google的签名,没有别的.
  • 无折旧的 API:使用最新的平台API(Android上的信用管理器,iOS上的Google Sign-In SDK).
  • 认证 + 授权:支持单流中的认证(ID sorders)和授权(access sorders,服务器认证代码).
  • 错误代码: 为正确处理错误提供打出的错误代码.
  • 在网络上重定向流量:使用重定向的OAuth流来代替弹出,从而产生更可靠和更方便用户的经验.

为什么我需要Android和iOS上的网络客户端ID?

这个 clientId 选项必须是来自所有平台的 Google Cloud Console 的网络客户端ID。 在Android上,它作为服务器客户端ID被传递到证书管理器API和授权客户端API. 在iOS上,它被用作Google Sign-In SDK的服务器客户端ID. 在 iOS 上,您通过 GIDClientID 键 Info.plist 文件,参见 安装 节.

为什么 signIn 承诺永远不要在网络上解决?

在Web上,插件使用基于重定向的OAuth流. 这个 signIn(...) 方法重定向到Google OAuth授权页面,因此承诺永远无法解决. 用户签名后,应用程序会重新定向到 redirectUrl 你必须打电话 handleRedirectCallback() 以完成登录流程,参见 使用示例 见上文.

我怎么才能得到谷歌API的登录符??

配置 scopes 选项 initialize(...) 方法。 然后,插件除了认证之外,还要求授权,因为认证允许 accessToken 财务报告和审定财务报表 serverAuthCode 属性。 如果您需要访问并刷新后端上的符号,请交换 serverAuthCode 从来没有客户端,如 警卫 节.

为什么Android的签入流量在选择账户后就失败了?

如果取账器打开,但一旦取出一个账户,流量就会出故障,则该应用极有可能丢失匹配的Android OAuth客户端. 查找日志输出中的以下条目之一 :

Auth.Api.Credentials: colz: [8] Unknown error [status=UNREGISTERED_ON_API_CONSOLE].
Auth.Api.Credentials: colz: [16] Account reauth failed.

Google Play 服务将此报告为取消, 因此插件拒绝使用 SIGN_IN_CANCELED 错误代码和 Account reauth failed 作为错误消息。 确保Android OAuth客户端对签名应用的证书的软件包名称和SHA-1指纹存在,详情见: 安装 节。 通过Google Play分发的构建必须使用应用程序签名密钥的指纹,而不是上传密钥.

通讯

随时更新有关卡帕韦索姆、Capacitor和Ionic生态系统的最新消息和最新消息,因为我们 《卡帕索克通讯》。 。 。 .

更改日志

见 变动情况。 。 。 .

许可证

见 自由主义。 。 。 .

[^1]: 本项目不附属于Google Inc.或其任何子公司或子公司,不由Google Inc.认可、赞助或核准.

版本与发布记录

@capawesome/capacitor-google-sign-in 共发布 6 个版本,首次发布于 2026/02/16;过去 12 个月发布了 6 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.1.4latest2026/09/022 个月前
0.1.32026/08/202 个月前
0.1.22026/03/267 个月前
0.1.12026/02/198 个月前
0.1.02026/02/168 个月前
0.0.1dev2026/02/168 个月前

关于 @capawesome/capacitor-google-sign-in 的常见问题

@capawesome/capacitor-google-sign-in 是什么?

在Android,iOS,和Web上与Google签约的电容插件.

如何安装 @capawesome/capacitor-google-sign-in?

在项目目录运行 npm install @capawesome/capacitor-google-sign-in,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@capacitor/core(>=8.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@capawesome/capacitor-google-sign-in 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@capawesome/capacitor-google-sign-in 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@capawesome/capacitor-google-sign-in 可以商用吗?

@capawesome/capacitor-google-sign-in 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@capawesome/capacitor-google-sign-in 的下载量有多少?

根据 npm 官方下载统计,@capawesome/capacitor-google-sign-in 在 2026/10/09 – 2026/11/07 这 30 天内被下载 97,096 次,日均约 3,237 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@capawesome/capacitor-google-sign-in 还在维护吗?

最新版本 0.1.4 发布于 2026/09/02(2 个月前);至今共发布 6 个版本,其中过去 12 个月发布了 6 个;首次发布于 2026/02/16。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。