我正在尝试在 map 引擎中为谷歌地图创建表格。我已将服务帐户添加到 map 的 Mapsengine 管理面板中的访问列表中,并授予其“可以编辑”权限。我还在项目的开发者控制台中授予了它编辑权限。
这是我发送访问 token 的地方,该 token 正在发回 token :
var googleapis = require('googleapis');
function connect() {
var authClient = new googleapis.auth.JWT(
'216755859529-1s2o9qofhd9ea65ang9clpd1936ldfcr@developer.gserviceaccount.com',
'../bin/googleoauth2.pem',
'notasecret',
['https://www.googleapis.com/auth/mapsengine'],
// User to impersonate (leave empty if no impersonation needed)
''
);
authClient.authorize(function(err, tokens) {
if (err) {
console.log(err);
return;
}
else {
console.log(tokens);
}
googleapis.discover('mapsengine', 'v1').execute(function (err, client) {
if (err) {
console.log('Problem during the client discovery.', err);
return;
}
createNewTable();
client.mapsengine.tables.create(mapengine_table_body).withAuthClient(authClient).execute(function (err, response) {
if (err) {
console.log(err);
return;
} else {
console.log(response);
return;
}
});
});
});
}
这是我创建表格并发送它的地方:
function createNewTable() {
mapengine_table_body = {
"projectId": projectID,
"name": "World Famous Mountains",
"description": "A partial list of famous mountains in the world.",
"draftAccessList": "Map Editors",
"tags": [
"mountain",
"high places"
],
"schema": {
"columns": [
{
"name": "geometry",
"type": "points"
},
{
"name": "mountain_name",
"type": "string"
},
{
"name": "height",
"type": "integer"
}
]
}
}
}
function start() {
'use strict';
var pck, program;
pck = require('../package.json');
program = require('commander');
program
.version(pck.version)
.option('-r, --run', 'Run')
.parse(process.argv);
console.log('running:');
if (program.run) {
connect();
}
}
查看项目时我从 url 获取的 ProjectId。我已经浏览了尽可能多的文档,但我无法弄清楚这一点。谢谢。
如果没有您的错误响应,我无法给您确切的答案,但这里有一些提示。
- 检查执行 block 中
err
的内容。 API 将在 err.errors
中返回一些内容,以解释问题所在(如果问题发生在 API 端)。
- 不清楚
mapengine_table_body
变量的范围是什么,请尝试在调用 createNewTable()
之后立即将其记录在 connect()
调用中code> 以确保您拥有实际数据。
googleapis.auth.JWT
构造函数中的第三个参数(至少根据 this )不是 key 密码,它是提供 key 密码的另一种方法实际的键内联(而不是使用参数 #2 中的文件位置)。
- map 引擎中的项目 ID 可能看起来像很大的数字,但在 JavaScript 中将它们视为较大的数字很可能会导致四舍五入,这意味着您为 API 提供的数字与代码中的数字不同。为了防止这种情况发生,请确保您的项目 ID 被“引用”,以便将其视为字符串。
希望这里有帮助!如果没有,请分享建议#1 的输出。
我是一名优秀的程序员,十分优秀!