@choochmeque/tauri-plugin-google-auth-api

中文文档
0.6.0-rc.5发布于 2026/09/17MITTypeScriptESM + CJS构建来源已验证近 30 天下载 1.4万

启用 Google OAuth 认证的 Tauri v2 插件

中文使用文档
文档目录24 节
  1. 特征
  2. 安装
  3. 锈
  4. Java 脚本/ Type 脚本
  5. 配置
  6. 1. 登记插件
  7. 2. 配置权限
  8. 3. 平台特定设置
  9. 使用量
  10. 基本示例
  11. 高级配置
  12. API 参考
  13. 类型
  14. 职能
  15. 处理错误
  16. 平台支持
  17. 安全考虑
  18. 解决问题
  19. 共同问题
  20. 演示应用程序
  21. 捐款
  22. 许可证
  23. 承认
  24. 支助

Tauri 插件谷歌认证

Crates.io npm License

用于Google OAuth认证的Tauri v2插件,为移动和桌面应用程序提供无缝的Google Sign-In集成.

特征

  • 安全 OAuth 2.0 认证 - 在PKCE支持下全面实施OAuth 2.0
  • 移动支持 - 使用平台专用API的原生iOS和Android实施
  • 桌面支持 - OAuth2 与 macOS、 Windows 和 Linux 本地重定向服务器相通
  • 托肯管理 - 托肯刷新和撤销支持
  • 警卫第一 - PKCE、安全转向处理和正确错误管理
  • 弹性配置 - 自定义方向调整 URI、 HTML 回复和动态端口绑定

安装

锈

将插件添加到您的 Cargo.toml数字 :

[dependencies]
tauri-plugin-google-auth = "0.6"

Java 脚本/ Type 脚本

安装 JavaScript API 软件包 :

npm install @choochmeque/tauri-plugin-google-auth-api
# or
yarn add @choochmeque/tauri-plugin-google-auth-api
# or
pnpm add @choochmeque/tauri-plugin-google-auth-api

配置

1. 登记插件

在你的Tauri应用程序 src-tauri/src/lib.rs数字 :

use tauri_plugin_google_auth;

#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
    tauri::Builder::default()
        .plugin(tauri_plugin_google_auth::init())
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

2. 配置权限

添加到您的 src-tauri/capabilities/default.json数字 :

{
  "permissions": [
    "google-auth:default"
  ]
}

3. 平台特定设置

iOS 设置

  1. 配置 Google 签名 - 单位数字 :

    • 将您的 Google OAuth 客户端ID 添加到您的应用程序
    • 配置 URL 方案于 Info.plist
    • 见 iOS SETUP.md (英语) 详细指示
  2. 需要的Info.plist 条目数字 :

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>YOUR_REVERSED_CLIENT_ID</string>
        </array>
    </dict>
</array>

Android 设置

配置 Google 云控台数字 :

  • 创建 OAuth 2. 0 证书
  • 添加您的应用程序的 SHA-1 指纹
  • 配置授权重定向 URI

见 安得罗得克·斯图普(签名) 用于完整的设置指令.

桌面设置( MacOS, Windows, Linux)

配置 Google 云控台数字 :

  • 创建 OAuth 2.0 证书( Web 应用程序类型)
  • 添加 http://localhost 用于授权重定向 URI
  • 注意: 插件自动处理动态端口分配

桌面所需的字段数字 :

  • clientId: 您的 Google OAuth 客户端ID
  • clientSecret: 您的 Google OAuth 客户端秘密( 桌面需要)
  • scopes: 需要至少一个范围

桌面执行使用本地重定向服务器:

  • 绑入可用的端口(或如果通过 redirectUri(中文(简体) )
  • 在默认浏览器中打开授权 URL
  • 从方向获取授权代码
  • 向用户显示自定义的成功消息

使用量

基本示例

import { signIn, signOut, refreshToken } from '@choochmeque/tauri-plugin-google-auth-api';

// Sign in with Google
async function authenticateUser() {
  try {
    const response = await signIn({
      clientId: 'YOUR_GOOGLE_CLIENT_ID',
      clientSecret: 'YOUR_CLIENT_SECRET', // Required for desktop platforms
      scopes: ['openid', 'email', 'profile'],
      hostedDomain: 'example.com', // Optional: restrict to specific domain
      loginHint: '[email protected]', // Optional: pre-fill email
      redirectUri: 'http://localhost:8080', // Optional: specify custom redirect URI
      successHtmlResponse: '<h1>Success!</h1>' // Optional: custom success message (desktop)
    })
    
    console.log('ID Token:', response.idToken);
    console.log('Access Token:', response.accessToken);
    console.log('Refresh Token:', response.refreshToken);
    console.log('Expires at:', new Date(response.expiresAt * 1000));
  } catch (error) {
    console.error('Authentication failed:', error);
  }
}

// Sign out
async function logout(accessToken?: string) {
  try {
    // With token revocation (recommended)
    await signOut({ accessToken });
    // Or local sign-out only
    // await signOut();
    console.log('Successfully signed out');
  } catch (error) {
    console.error('Sign out failed:', error);
  }
}

// Refresh tokens
async function refreshUserToken(storedRefreshToken: string) {
  try {
    const response = await refreshToken({
      refreshToken: storedRefreshToken,
      clientId: 'YOUR_GOOGLE_CLIENT_ID',
      clientSecret: 'YOUR_CLIENT_SECRET' // Required for desktop
    });
    console.log('New Access Token:', response.accessToken);
  } catch (error) {
    console.error('Token refresh failed:', error);
  }
}

高级配置

import { signIn } from '@choochmeque/tauri-plugin-google-auth-api';

const response = await signIn({
  clientId: 'YOUR_CLIENT_ID',
  clientSecret: 'YOUR_CLIENT_SECRET', // Required for desktop
  scopes: [
    'openid',
    'email',
    'profile',
    'https://www.googleapis.com/auth/drive.readonly'
  ],
  hostedDomain: 'company.com', // Restrict to company domain
  loginHint: '[email protected]', // Pre-fill the email field
  redirectUri: 'http://localhost:9000' // Custom port (desktop only)
});

API 参考

类型

SignInOptions

interface SignInOptions {
  clientId: string;                   // Required: Google OAuth client ID
  clientSecret?: string;              // Required for desktop, Android web flow
  scopes?: string[];                  // OAuth scopes to request
  hostedDomain?: string;              // Restrict authentication to a specific domain
  loginHint?: string;                 // Email hint to pre-fill in the sign-in form
  redirectUri?: string;               // Custom redirect URI (desktop: localhost only)
  successHtmlResponse?: string;       // Custom HTML shown after auth (desktop only)
  flowType?: 'native' | 'web';        // Android only, default: 'native'. See ANDROID_SETUP.md
  accessType?: 'offline' | 'online';  // 'offline' requests a refreshToken. Defaults: 'online' on desktop and Android native flow, 'offline' on iOS and Android web flow. Android needs clientSecret for the refreshToken
  prompt?:                            // Desktop/iOS: all values. Android: only 'consent' (forces re-consent), others ignored
    | 'none' 
    | 'consent' 
    | 'select_account' 
    | 'consent select_account' 
    | 'select_account consent';
}

TokenResponse

interface TokenResponse {
  idToken?: string;          // JWT ID token (requires 'openid' scope)
  accessToken: string;       // OAuth access token for API calls
  scopes: string[];          // List of scopes granted with the access token
  refreshToken?: string;     // Refresh token (when offline access is granted)
  expiresAt?: number;        // Token expiration timestamp (seconds since epoch)
}

职能

signIn(options: SignInOptions): Promise<TokenResponse>

启动带有指定选项的 Google Sign- In流程 .

signOut(options?: SignOutOptions): Promise<void>

签署当前用户。 可以选择取消与Google的登录符.

interface SignOutOptions {
  accessToken?: string;          // Token to revoke (if not provided, local sign-out only)
  flowType?: 'native' | 'web';   // Android only, default: 'native'
}

refreshToken(options: RefreshTokenOptions): Promise<TokenResponse>

使用刷新符号刷新访问令牌 .

interface RefreshTokenOptions {
  refreshToken?: string;         // Required for desktop, Android web flow
  clientId: string;              // Google OAuth client ID
  clientSecret?: string;         // Required for desktop, Android web flow
  scopes?: string[];             // Required for Android native flow
  flowType?: 'native' | 'web';   // Android only, default: 'native'
}

处理错误

try {
  await signIn({ clientId: 'YOUR_CLIENT_ID', scopes: ['openid'] });
} catch (error) {
  console.error('Sign-in failed:', error);
}

平台支持

平台状态执行情况
iOS系统支助原始 Google 签名- 通过 SDK 简单的 Google 签名
机器人支助证书管理器 API
马科斯支助OAuth2 带有本地重定向服务器
窗口支助OAuth2 带有本地重定向服务器
链接支助OAuth2 带有本地重定向服务器

安全考虑

  • 托肯存储: 托肯使用特定平台加密安全存储
    • iOS: 键链服务
    • Android: 加密共享首选项
    • 桌面:应用程序内存(根据需要执行安全存储)
  • 仅限 HTTPS: 所有 OAuth 流量使用 HTTPS 进行安全通信
  • 捷克: 执行代码交换的证明钥匙,以加强所有平台的安全
  • SSRF 保护: 配置了 HTTP 客户端以防止重定向漏洞
  • 动态端口绑定: 桌面平台默认使用随机可用的端口
  • Token 撤销: 支持以 Google 的撤销端点撤销适当的代号

解决问题

共同问题

iOS:点击登录后立即"用户已取消"出错

  • 确保您在 Info 中正确配置 URL 方案 。 列表
  • 校验您的客户端标识正确, 并匹配您的 Google Cloud Console 配置

Android: 登录上"配置错误"

  • 检查您的 SHA-1 指纹是否添加到 Google Cloud 控制台
  • 确保您的软件包名称符合 Google Cloud Console 中的名称
  • 验证互联网权限

桌面: 托肯刷新失败

  • 保证您通过 clientId 财务报告和审定财务报表 clientSecret 改为 refreshToken()
  • 验证刷新令牌是否有效且未过期
  • 确保在初始登录期间请求离线访问范围

Token 刷新失败( 移动)

  • 确保在初始登录期间请求离线访问范围
  • 请检查access-date=中的日期值 (帮助)
  • 如果您的 OAuth 配置需要验证客户端机密

演示应用程序

演示应用程序可用于 examples/google-auth-demo/ 显示所有插件功能 :

cd examples/google-auth-demo
pnpm install
pnpm tauri dev

捐款

欢迎捐款! 请随意提交拉力请求 对于重大变动,请先开出一个问题来讨论你想要改变什么.

  1. 叉子存储器
  2. 创建您的特性分支( E)git checkout -b feature/amazing-feature(中文(简体) )
  3. 提交更改( E)git commit -m 'Add some amazing feature'(中文(简体) )
  4. 推向分行(git push origin feature/amazing-feature(中文(简体) )
  5. 打开拉请求

许可证

这个项目根据麻省理工学院许可证颁发——见 自由主义 详细文件.

承认

支助

如果遇到任何问题或有问题,请将问题提交至 GitHub 仓库。 。 。 .

版本与发布记录

@choochmeque/tauri-plugin-google-auth-api 共发布 18 个版本,首次发布于 2025/08/27;过去 12 个月发布了 9 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.6.0-rc.5latest2026/09/171 个月前
0.6.0-rc.42026/09/012 个月前
0.6.0-rc.22026/07/044 个月前
0.6.0-rc.12026/06/174 个月前
0.5.12026/01/199 个月前
0.5.02026/01/199 个月前

关于 @choochmeque/tauri-plugin-google-auth-api 的常见问题

@choochmeque/tauri-plugin-google-auth-api 是什么?

启用 Google OAuth 认证的 Tauri v2 插件

如何安装 @choochmeque/tauri-plugin-google-auth-api?

在项目目录运行 npm install @choochmeque/tauri-plugin-google-auth-api,或使用 pnpm add / yarn add / bun add。

@choochmeque/tauri-plugin-google-auth-api 支持 TypeScript 吗?

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

@choochmeque/tauri-plugin-google-auth-api 支持 ESM 还是 CommonJS?

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

@choochmeque/tauri-plugin-google-auth-api 可以商用吗?

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

@choochmeque/tauri-plugin-google-auth-api 的下载量有多少?

根据 npm 官方下载统计,@choochmeque/tauri-plugin-google-auth-api 在 2026/10/10 – 2026/11/08 这 30 天内被下载 14,301 次,日均约 477 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@choochmeque/tauri-plugin-google-auth-api 还在维护吗?

最新版本 0.6.0-rc.5 发布于 2026/09/17(1 个月前);至今共发布 18 个版本,其中过去 12 个月发布了 9 个;首次发布于 2025/08/27。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。