使用访问令牌创建 BigQuery 作业



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

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

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

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

我希望这有所帮助

最新更新