【问题标题】:Create BigQuery job using access token使用访问令牌创建 BigQuery 作业
【发布时间】:2019-11-24 18:18:30
【问题描述】:

我有一个 google access_token 我想在创建 BigQuery 查询作业时使用它来进行身份验证。使用服务帐户 json 可以正常工作。

我有这个:

client = new BigQuery({
    token: accessToken,
    projectId: 'my-project'
});

return await client.createQueryJob(sql);

它仍在使用服务帐户凭据。我使用令牌运行的所有其他东西都可以正常工作。

以下是在没有 Google 客户端 API 的情况下运行 REST API 的示例。

const resp = await fetch(     
    'https://bigquery.googleapis.com/bigquery/v2/projects/my-project/jobs',
    {
        method: 'POST',
        headers: {
            authorization: `Bearer ${accessToken}`,
            'content-type': 'application/json',
            'Accept': 'application/json',
            'Accept-Charset': 'utf-8'
        },
        body: JSON.stringify({
            configuration: {
                query: {
                    query: sql,
                    useLegacySql: false
                }
            }
        })
    }
);
const j = await resp.json();

如何让客户端 API 使用令牌?

【问题讨论】:

  • @GrahamPolley 谢谢,但不是真的。我可以直接使用其余的 API,但我想改用客户端库。
  • 试试这个:const options = { token: 'accessToken', projectId: 'my-project', }; const bigquery = new BigQuery(options); ..github.com/googleapis/nodejs-bigquery/blob/…
  • @GrahamPolley 这和我的例子一模一样...
  • 是的,你是对的。 JS 不是我的强项。但是,文档/API 明确表示您可以使用访问令牌。奇怪的。对不起,伙计,我很难过。

标签: node.js google-bigquery


【解决方案1】:

根据link,您需要在初始化 BigQuery 客户端时使用以下代码指定显式凭据:

const bigquery = new BigQuery({ projectId: 'your-project-id', keyFilename: '/path/to/keyfile.json' });

也就是说,使用显式凭据的唯一方法是使用与服务帐户关联的 json 密钥文件。

希望对你有帮助

【讨论】:

  • 不,您可以使用access_token 以其他用户身份运行。如果我使用 REST API,它会按预期工作,但我想使用推荐的方式并使用客户端 API。
  • OP 询问有关使用访问令牌的问题。这是使用服务帐号。
  • @Asken 是否记录在客户端库中?如果有,在哪里?
  • 在这种情况下,我建议您使用 GCP 开票。
猜你喜欢
  • 2013-05-15
  • 1970-01-01
  • 2015-04-12
  • 2011-10-22
  • 2019-03-27
  • 1970-01-01
  • 2022-01-21
  • 2018-06-02
  • 2021-10-18
相关资源
最近更新 更多