2014-06-12 2 views
2

지도 엔진에서 Google지도 용 테이블을 만들려고합니다. mapengine 관리 패널의 액세스 목록에 서비스 계정을 추가하고 "편집 가능"권한을 부여했습니다. 또한 프로젝트의 개발자 콘솔에서 편집 권한을 부여했습니다. 내가 토큰을 다시 보내는 액세스 토큰 퇴장하고Google Mapsengine이 서비스 계정에 대한 사용 권한이 충분하지 않음

이있다 : 나는 테이블을 생성하고 그것을 보내고 곳

var googleapis = require('googleapis'); 
    function connect() { 
     var authClient = new googleapis.auth.JWT(
      '[email protected]account.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(); 
    } 
} 

ProjectId 프로젝트를 볼 때 URL에서 가져옵니다. 내가 찾을 수있는만큼 많은 문서를 검토했지만,이 문서를 이해할 수 없었습니다. 감사.

+1

보고있는 오류가 무엇입니까? 그리고 인증 및 요청 단계에 어떤 라이브러리를 사용하고 있습니까? 귀하의 코드가 [Google JS 라이브러리] (https://developers.google.com/api-client-library/javascript/reference/referencedocs)처럼 보이지 않았습니까? –

+0

@ MarkMcDonald 실제로 Google 노드 라이브러리를 사용하도록 코드가 변경되었습니다. 나는 응답을 기록 할 때 여전히 cli에서 오류가 발생합니다. GET 및 응답을 기록 할 수 있으며 이전에 만든 프로젝트 또는 맵을 나열하지만 테이블을 만들지 않습니다. "이 작업에 대한 권한이 충분하지 않습니다"라는 메시지가 나타납니다. 새 코드를 표시하기 위해 원래 게시물을 편집하고 있습니다. – user3734990

답변

0

오류 응답 없음 정확한 답변을 드릴 수는 없지만 여기에는 몇 가지 지침이 있습니다.

  1. 실행 블록에서 err의 내용을 확인하십시오. API는 err.errors에 무엇이 있는지 알려주며 API 측면에서 문제가 발생하는 경우 문제를 설명해야합니다.
  2. mapengine_table_body 변수의 범위가 명확하지 않은 경우 실제 데이터가 있는지 확인하기 위해 createNewTable()을 호출 한 직후에 connect() 호출에 바로 로그인 해보십시오. (적어도 this에 따른)
  3. googleapis.auth.JWT 생성자 번째 인수 하지 키 암호, 그것은 (인수 2의 파일 위치를 사용하는 것이 아니라) 실제 키 인라인을 제공하는 대안적인 방법이다.
  4. Maps Engine의 프로젝트 ID는 큰 숫자처럼 보일 수 있지만 자바 스크립트에서 큰 숫자로 처리하면 반올림 될 가능성이 높습니다. 이는 API에 코드와 다른 숫자를 지정한다는 의미입니다. 이를 방지하려면 프로젝트 ID가 "따옴표"로되어 있는지 확인하십시오. 따라서 프로젝트 ID가 문자열로 처리됩니다.

여기에 도움이 되었기를 바랍니다. 그렇지 않으면 제안 # 1의 결과를 공유하십시오.