You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js及Flutter中获取Google Cloud API访问令牌?

在Node.js和Flutter中获取Google Cloud API访问令牌的解决方案

问题背景

我能通过gcloud命令行轻松获取Google Cloud API的访问令牌(有效期1小时):

./google-cloud-sdk/bin/gcloud auth application-default print-access-token

但在Node.js和Flutter应用里却没法实现——我有clientID和clientSecret,但缺少refreshToken;就算拿到refreshToken,它也会定期过期。该怎么解决?如何在应用中访问Google Cloud API?

Node.js实现方案(已验证)

使用google-auth-library库,通过服务账号密钥文件自动管理令牌(无需手动处理refreshToken,库会自动刷新):

const { GoogleAuth } = require('google-auth-library');

async function getAccessToken() {
    const auth = new GoogleAuth({
        keyFilename: 'path/to/your/service-account-key.json',
        scopes: 'https://www.googleapis.com/auth/cloud-platform'
    });

    const client = await auth.getClient();
    const accessToken = await client.getAccessToken();
    return accessToken;
}

Flutter/Dart实现方案

在Dart/Flutter中,可以使用googleapis_auth包实现类似功能,步骤如下:

1. 添加依赖

在pubspec.yaml中添加依赖:

dependencies:
  googleapis_auth: ^1.4.1
  http: ^1.1.0

2. 代码实现

通过服务账号JSON密钥文件创建凭证,获取可自动刷新的客户端:

import 'dart:convert';
import 'dart:io';
import 'package:googleapis_auth/auth_io.dart';
import 'package:http/http.dart' as http;

Future<String> getGoogleCloudAccessToken() async {
  // 加载本地服务账号密钥文件
  final serviceAccountJson = json.decode(
    File('path/to/service-account-key.json').readAsStringSync(),
  );

  final credentials = ServiceAccountCredentials.fromJson(serviceAccountJson);
  const scopes = [
    'https://www.googleapis.com/auth/cloud-platform',
  ];

  // 获取支持自动刷新的Auth客户端
  final client = await clientViaServiceAccount(credentials, scopes);
  
  // 获取当前有效访问令牌
  final accessToken = client.credentials.accessToken.data;
  
  // 注意:客户端会自动处理令牌过期刷新,建议复用该client进行后续API调用
  // 不再使用时记得关闭客户端释放资源:client.close();

  return accessToken;
}

关键说明

  • 服务账号密钥文件需从Google Cloud控制台下载(IAM -> 服务账号 -> 创建密钥 -> 选择JSON格式)。
  • googleapis_auth库会自动处理令牌过期与刷新逻辑,无需手动维护refreshToken。
  • 若为Flutter移动端应用,需注意服务账号密钥的安全存储,避免直接打包在安装包中暴露,可通过环境变量或安全存储方案加载。

内容的提问来源于stack exchange,提问作者Alex Kay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 08:30:02