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

如何使用Node.js OAuth2获取谷歌云平台(GCP)终端用户的项目列表

可行实现方案

方案1:直接调用BigQuery原生projects.list接口(推荐,无需额外API启用操作)

这个方案完全依赖你已经可用的BigQuery访问权限,不需要启用Resource Manager API,也不需要终端用户做额外操作,返回的是用户有权限访问且可正常使用BigQuery服务的项目列表,刚好匹配你后续用所选项目访问BigQuery的使用场景。

前置要求

  • 你之前申请OAuth授权时已经添加了以下任意一个scope:
    • https://www.googleapis.com/auth/bigquery.readonly(只读权限足够)
    • https://www.googleapis.com/auth/bigquery
    • https://www.googleapis.com/auth/cloud-platform
      如果你之前的授权已经包含上述scope,可以直接调用,无需重新走授权流程。

代码实现(Node.js)

方式1:使用官方BigQuery客户端(推荐)

如果你已经引入了@google-cloud/bigquery依赖,可直接调用内置方法:

const { BigQuery } = require('@google-cloud/bigquery');

// 传入你已经兑换好凭证的OAuth2客户端实例
const bigquery = new BigQuery({
  authClient: yourAuthorizedOAuth2Client
});

async function listUserProjects() {
  const [projects] = await bigquery.getProjects();
  // projects数组即为项目列表,每个元素包含id、projectId、friendlyName等字段
  return projects.map(p => ({
    id: p.id,
    projectId: p.projectId,
    name: p.friendlyName
  }));
}

方式2:直接发HTTP请求(无需引入BigQuery依赖)

如果你不想额外引入BigQuery客户端,可直接用现有access token调用REST接口:

const fetch = require('node-fetch');

async function listUserProjects(accessToken) {
  const res = await fetch('https://bigquery.googleapis.com/bigquery/v2/projects', {
    headers: {
      Authorization: `Bearer ${accessToken}`
    }
  });
  const data = await res.json();
  return data.projects?.map(p => ({
    id: p.id,
    projectId: p.projectReference?.projectId,
    name: p.friendlyName
  })) || [];
}

方案2:使用Resource Manager API(可返回全量项目,无需终端用户启用API)

如果你需要返回用户名下所有的GCP项目(无论是否启用BigQuery服务),这里要先澄清一个常见误解:nodejs-resource-manager库要求启用Resource Manager API的对象是你作为开发者申请OAuth客户端ID的所属GCP项目,而非终端用户的个人项目,终端用户完全感知不到这个操作,不需要做任何额外配置。
你只需要在自己的开发者GCP项目中启用Resource Manager API,授权时添加https://www.googleapis.com/auth/cloudplatformprojects.readonly scope,即可直接调用接口拉取全量项目列表,无需终端用户操作。


内容的提问来源于stack exchange,提问作者Edward Louth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:48:03