使用访问令牌创建 BigQuery 作业

问题描述 投票:0回答:2

我有一个 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 使用令牌?

node.js google-bigquery
2个回答
0
投票

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

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

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

希望有帮助


0
投票

自从你问以来已经有一段时间了,但由于这花了我一段时间才弄清楚,以防其他人陷入困境,这最终对我有用(使用刷新令牌而不是访问令牌):

const bigquery = new BigQuery({
    projectId: 'gcp-project-id',
    clientOptions: {
        refreshToken: 'askldjfaklsjdf',
    },
});
© www.soinside.com 2019 - 2024. All rights reserved.