2

マップ エンジンで Google マップのテーブルを作成しようとしています。マップの 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実行ブロックの内容を確認してください。err.errors問題が API 側で発生している場合、API は問題の内容を説明する何かを返します。
  2. mapengine_table_body変数のスコープが明確ではありません。実際のデータがあることを確認するために、呼び出しのconnect()直後に呼び出しでログに記録してみてください。createNewTable()
  3. コンストラクターの 3 番目の引数googleapis.auth.JWT(少なくともthisによると) はキーのパスワードではありません。これは、実際のキーをインラインで提供する別の方法です (引数 #2 でファイルの場所を使用するのではなく)。
  4. Maps Engine のプロジェクト ID は大きな数字のように見える場合がありますが、JavaScript で大きな数字として扱うと丸め処理が行われる可能性が高くなります。つまり、API にコード内の数字とは異なる数字を与えることになります。これを防ぐには、プロジェクト ID が「引用符で囲まれている」ことを確認して、文字列として扱われるようにします。

うまくいけば、ここで何かが役に立ちます!そうでない場合は、提案 #1 の出力を共有してください。

于 2014-06-17T00:43:59.617 に答える