FusionTables HTTP调用和使用JavaScript客户端库(gap)的调用的响应各不相同



我有一个JavaScript客户端应用程序。当我使用Angular的$http服务(本质上是下面的XHR)调用FusionTables API通过SQL查询检索一些数据时,我期望的数据会正确返回:

(注意config.apiKey是我的Google API密钥,从云控制台验证为正确)

$http({
"method": "GET",
"url": "https://www.googleapis.com/fusiontables/v1/query",
"params": {
"sql": sql,
"key": config.apiKey
}
});

现在,当我像这样使用JavaScript客户端库时,我会收到一个"Access Not Configured"错误:

(早些时候…)

gapi.client.setApiKey(config.apiKey);
gapi.client.load("fusiontables", "v1")

(注意,这有一个回调,它会推迟代码执行,直到成功加载为止)

gapi.client.fusiontables.query.sql({
"sql": sql
}).execute(function(data) {
future.resolve(data);
});

这导致数据包含:

{
"code": 403,
"message": "Access Not Configured",
"data": [
{
"domain": "usageLimits",
"reason": "accessNotConfigured",
"message": "Access Not Configured"
}
],
"error": {
"code": 403,
"message": "Access Not Configured",
"data": [
{
"domain": "usageLimits",
"reason": "accessNotConfigured",
"message": "Access Not Configured"
}
]
}
}

在引擎盖下,它似乎使用了某种JSON RPC格式来调用API,因此可能存在差异。在向新开发人员过渡的过程中,通过客户端库访问融合表的文档似乎已经消失了。

任何关于如何正确配置甚至调试它的建议都是非常受欢迎的。

更新:

我使用的是client.js的G+版本(称为client:plusone.js),因为我需要渲染Google+按钮。当我登录时,我会收到一个权限不足的警告(即使在设置API密钥时也是如此),所以我认为这是Fusion Tables客户端和Google+客户端之间的冲突-我正在试图找出是否有方法指定要使用的auth方法,但似乎没有。

尝试在API的onload回调中设置API键。例如,为发布的热图生成的代码具有以下内容(当然,对于伪API密钥):

<script type="text/javascript">
function ftOnLoadClientApi() {
gapi.client.setApiKey('xyzabc');
}
</script>
<script type="text/javascript" src="//apis.google.com/js/client.js?onload=ftOnLoadClientApi">
</script>

最新更新