gpt4 book ai didi

google-bigquery - 从 JavaScript 代码获取 BigQuery 数据

转载 作者:行者123 更新时间:2023-12-04 14:31:33 25 4
gpt4 key购买 nike

我是 BigQuery 的新手(以及实际使用 Google API)。尝试从 JavaScript 代码中读取表格时,鉴于我目前的经验和文档状态以及缺少可以找到的示例代码,我不知道应该如何完成。这是我已经通过 Google 的在线控制台填充的表格,并且可以在该在线控制台中无缝查询。

使用 Google 的 BigQuery 测试版 JavaScript 库,我的代码会收到跟随我的实际代码的错误对象。它无法获取表句柄,根据我的理解,这是实际发出读取表的调用所必需的。为了阅读表格的内容,我很确定我的代码在我使用的 API 调用方面不止一种方式不正确。

代码

gapi.client.load('bigquery', 'v2', function() {
gapi.client.setApiKey('My Key for browser apps here...');
var request = gapi.client.bigquery.tables.get({'id': 'My-dataset-name.My-table-name'});
request.execute(function(response) {console.log(response, JSON.stringify(response, null))});
});

结果

{"code":401,"message":"需要登录","data":[{"domain":"global","re​​ason":"required","message":"需要登录","locationType":"header","location":"授权"}]

我没有推断出 API key (在我的仪表板中显示的“浏览器应用程序的 key ”)是否足以授权访问以读取数据,以及应该用于 tables.get 的语法是什么?指示。鉴于第一次使用它的众多维度,我怀疑我是否会找到如何使用 API 而不会让我的头发着火。最后两点的详细解释是什么,工作示例代码是什么?

最佳答案

Google APIs Client library for JavaScript处理存储和使用 OAuth 2.0 访问和刷新 token 的客户端授权流程。正如 Jordan 所提到的,无法使用 API key 从客户端访问 BigQuery——因为 JavaScript 应用程序无法隐藏客户端 secret ,用户必须在某个时候授权访问 API。

我对您的服务器端用例感兴趣。您使用的是 node.js 还是其他一些服务器端 JS 框架?有一堆general OAuth node modules在节点工具箱(我对任何特定的“最佳”模块都不是很熟悉)。其中之一可能会简化通过 JS 在服务器端处理 token 的过程。

当您授权访问 Google API 时,系统会为您提供一个用于调用 API 的访问 token - Google API OAuth 2.0 访问 token 持续一小时。并且,您可以请求和存储刷新 token ,这将允许您在访问 token 过期时请求新的访问 token 。

这是直接从 our documentation about BigQuery authorization flows 提取的客户端 JavaScript 授权示例:

<html>
<head>
<script src="https://apis.google.com/js/client.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>

function auth() {
gapi.auth.authorize(config, function() {
gapi.client.load('bigquery', 'v2');
$('#client_initiated').html('BigQuery client authorized');
$('#auth_button').fadeOut();
$('#dataset_button').fadeIn();
});
}

// User Submitted Variables
var projectNumber = 'XXXXXXXXXX';
var clientId = 'XXXXXXXXXX.apps.googleusercontent.com';

var config = {
'client_id': clientId,
'scope': 'https://www.googleapis.com/auth/bigquery'
};

function listDatasets() {
var request = gapi.client.bigquery.datasets.list({
'projectId':projectNumber
});
request.execute(function(response) {
$('#result_box').html(JSON.stringify(response.result.datasets, null));
});
}
</script>
</head>

<body>
<button id="auth_button" onclick="auth();">Authorize</button>
<div id="client_initiated"></div>
<button id="dataset_button" style="display:none;" onclick="listDatasets();">Show datasets</button>
<div id="result_box"></div>
</body>
</html>

关于google-bigquery - 从 JavaScript 代码获取 BigQuery 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12479895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com