NodeJS 使用访问令牌创建BigQuery作业

s5a0g9ez  于 2023-06-05  发布在  Node.js
关注(0)|答案(1)|浏览(185)

bounty将在6天内到期。此问题的答案有资格获得+50声望奖励。jperry1147希望引起更多关注这个问题。

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

qij5mzcb

qij5mzcb1#

根据link,在初始化BigQuery客户端时,您需要使用以下代码来指定显式凭据:
const bigquery = new BigQuery({ projectId: 'your-project-id', keyFilename: '/path/to/keyfile.json' });
也就是说,使用显式凭证的唯一方法是使用与服务帐户关联的JSON密钥文件。
希望这能帮上忙

相关问题