# @choochmeque/tauri-plugin-google-auth-api 中文文档

规范地址：https://npmcn.com/package/%40choochmeque/tauri-plugin-google-auth-api/

版本：0\.6\.0-rc\.5
npm 元数据更新时间：2026-09-16T16:02:22.548Z
中文译文更新时间：2026-11-09T14:26:08.782Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40choochmeque/tauri-plugin-google-auth-api
原文对照：https://npmcn.com/package/%40choochmeque/tauri-plugin-google-auth-api/?lang=original
项目主页：https://github.com/Choochmeque/tauri-plugin-google-auth#readme
源码仓库：https://github.com/Choochmeque/tauri-plugin-google-auth

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：22.9 kB，6 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2025-08-26T16:03:30.172Z
- 最新版本发布：2026-09-16T16:02:22.167Z
- 近 30 天下载量：14301（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：18（近 12 个月 9 个）

## 中文简介

启用 Google OAuth 认证的 Tauri v2 插件

## 安装

```sh
npm install @choochmeque/tauri-plugin-google-auth-api
```

也可以使用：`pnpm add @choochmeque/tauri-plugin-google-auth-api`、`yarn add @choochmeque/tauri-plugin-google-auth-api`、`bun add @choochmeque/tauri-plugin-google-auth-api`

## README

# Tauri 插件谷歌认证

[![Crates.io](https://img.shields.io/crates/v/tauri-plugin-google-auth)](https://crates.io/crates/tauri-plugin-google-auth) [![npm](https://img.shields.io/npm/v/@choochmeque/tauri-plugin-google-auth-api)](https://www.npmjs.com/package/@choochmeque/tauri-plugin-google-auth-api) [![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://npmcn.com/package/%40choochmeque/tauri-plugin-google-auth-api/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`数字 :

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

### Java 脚本/ Type 脚本

安装 JavaScript API 软件包 :

```bash
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`数字 :

```rust
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`数字 :

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

### 3\. 平台特定设置

#### iOS 设置

1.  **配置 Google 签名 - 单位**数字 :
    
    -   将您的 Google OAuth 客户端ID 添加到您的应用程序
    -   配置 URL 方案于 `Info.plist`
    -   见 [iOS SETUP.md (英语)](https://npmcn.com/package/%40choochmeque/tauri-plugin-google-auth-api/iOS_SETUP.md) 详细指示
2.  **需要的Info.plist 条目**数字 :
    

```xml
<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

见 [安得罗得克·斯图普(签名)](https://npmcn.com/package/%40choochmeque/tauri-plugin-google-auth-api/ANDROID_SETUP.md) 用于完整的设置指令.

#### 桌面设置( MacOS, Windows, Linux)

**配置 Google 云控台**数字 :

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

**桌面所需的字段**数字 :

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

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

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

## 使用量

### 基本示例

```typescript
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: 'user@example.com', // 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);
  }
}
```

### 高级配置

```typescript
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: 'john.doe@company.com', // Pre-fill the email field
  redirectUri: 'http://localhost:9000' // Custom port (desktop only)
});
```

## API 参考

### 类型

#### `SignInOptions`

```typescript
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`

```typescript
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的登录符.

```typescript
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>`

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

```typescript
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'
}
```

## 处理错误

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

## 平台支持

| 平台 | 状态 | 执行情况 |
| --- | --- | --- |
| iOS系统 | 支助 | 原始 Google 签名- 通过 SDK [简单的 Google 签名](https://github.com/Choochmeque/SimpleGoogleSignIn) |
| 机器人 | 支助 | 证书管理器 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/` 显示所有插件功能 :

```bash
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.  打开拉请求

## 许可证

这个项目根据麻省理工学院许可证颁发——见 [自由主义](https://npmcn.com/package/%40choochmeque/tauri-plugin-google-auth-api/LICENSE) 详细文件.

## 承认

-   [陶里语Name](https://tauri.app/) - 对于惊人的跨平台框架
-   [谷歌签名 SDK](https://developers.google.com/identity) - 实施OAuth
-   Tauri社区继续提供支持

## 支助

如果遇到任何问题或有问题,请将问题提交至 [GitHub 仓库](https://github.com/choochmeque/tauri-plugin-google-auth/issues)。 。 。 .

## 常见问题

### @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 和提交记录判断。

