2

我正在尝试在地图引擎中为谷歌地图创建表格。我已将服务帐户添加到地图的 mapsengine 管理面板的访问列表中,并授予它“可以编辑”权限。我还在项目的开发者控制台中赋予了它编辑权限。

这是我发送访问令牌的地方,该令牌正在发送回一个令牌:

    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。我查看了尽可能多的文档,但我无法弄清楚这一点。谢谢。

4

1 回答 1

0

如果没有您的错误响应,我无法给您确切的答案,但这里有几个指针。

  1. 检查err执行块中的内容。如果问题发生在 API 端,API 将返回err.errors应该解释问题所在的内容。
  2. 目前尚不清楚mapengine_table_body变量的范围是什么,请尝试在connect()调用后立即将其记录在调用createNewTable()中,以确保您拥有实际数据。
  3. 构造函数中的第三个参数googleapis.auth.JWT(至少根据this不是密钥密码,它是提供实际密钥内联的另一种方法(与使用参数 #2 中的文件位置相反)。
  4. Maps Engine 中的项目 ID 可能看起来像大数字,但在 JavaScript 中将它们视为大数字很可能会导致四舍五入,这意味着您为 API 提供的数字与代码中的数字不同。为防止这种情况,请确保您的项目 ID 被“引用”,以便将其视为字符串。

希望这里有帮助!如果没有,请分享建议 #1 的输出。

于 2014-06-17T00:43:59.617 回答