0

Node.js로 작성된 내 알렉사 스킬 내에 Google 워드 프로세서 시트를 만들고 싶습니다. 나는 Google API를 사용하도록 설정했기 때문에 amazon dev 포털에서 필요한 범위를 설정했는데 실제로 Google 계정에 로그인 할 수 있으므로 (게시 된 코드의 처음 몇 줄이 작동하는 것처럼 보임) 어떤 오류 메시지도 표시되지 않습니다. 그러나 시트는 절대로 만들어지지 않습니다.노드 js로 Google 스프레드 시트 만들기

이제 주된 질문은 누구든지 내 코드에서 문제를 볼 수 있는지 여부입니다.

하지만 나는 또한 매우 흥미가있을 것입니다. 나는 계정 연결을 사용하기 때문에 Alexa 테스트 시뮬레이터에서 그 코드를 시도 할 수는 없지만 그것을 실행하기 전에 Alexa에 업로드해야합니다. 모든 디버그 메시지를 가져올 수 없습니다. 그렇게 최선의 방법으로 디버깅하나요?

if (this.event!== undefined) 
{ 
if (this.event.session.user.accessToken === undefined) 
{ 
    this.emit(':tellWithLinkAccountCard','to start using this skill, please use the companion app to authenticate on Google'); 
    return; 
    } 
} 
else 
{ 

    this.emit(':tellWithLinkAccountCard','to start using this skill, please use the companion app to authenticate on Google'); 
    return; 
} 
var oauth2Client = new google.auth.OAuth2('***.apps.googleusercontent.com', '***', '***'); 

oauth2Client.setCredentials({ 
    access_token: this.event.session.user.accessToken, 
    refresh_token: this.event.session.user.refreshToken 
}); 

var services = google.sheets('v4'); 
services.spreadsheets.create({ 
    resource : {properties:{title:"MySheet"}}, 
    auth  : oauth2Client 
}, function(err,response) { 
    if(err) { 
    console.log('Error : unable to create file, ' + err); 
    return; 
    } else { 
    console.dir(response); 
    } 
}); 

편집 : 수동으로 하단 부분 만 시도하고 스프레드 시트를 만들 수있었습니다. 그래서 문제는 실제로 "this.event.session.user.accessToken"을 사용하여 액세스 토큰을 검색하는 것 같습니다.

+0

this.event.session.user.accessToken은 어디에서 왔습니까? 서비스 계정을 사용하는 것처럼 냄새가 나나요? – pinoyyid

+0

계정 연결을 위해 amazon alexa 인터페이스에서 제공합니다. 나는 서비스 계정을 사용한다고 생각하지 않는다. – Lot

+0

http 요청/응답을 통해 200이나 오류를 반환했는지 확인할 수 있습니까? – pinoyyid

답변

1

단위 테스트를 사용하는 것과 같은 문제를 디버깅하는 것이 훨씬 쉽습니다. 이렇게하면 코드를 로컬에서 재실행 할 수 있습니다. NPM과 Mocha를 사용하여 맞춤식 스마트 홈 기술을 쉽게 디버그 할 수 있습니다. Nodejs 코드를 테스트하기 위해 NPM과 Mocha를 사용하는 방법에 대한 온라인 정보가 꽤 많이 있습니다. 따라서 여기서 다시 설명하지 않겠습니다. 예를 들어, Big Nerd Ranch article을 참조하십시오. 처음에는 프로젝트를 설정하는 것이 좀 더 복잡해졌지만, 버그를 발견 할 때마다 기뻤습니다.

  1. 상반기 알렉사에서 오는 요청을 처리 할 및 토큰을 추출 :이 예에서

    , 나는 반에서 코드를 나눌 것입니다.
  2. 두 번째 절반은 토큰을 사용하여 Google 문서를 만듭니다. 나는 또한 만들 의사의 이름을 전달할 것이다.

먼저 유효한 토큰 (테스트 전용)과 테스트 문서 이름을 전달하여 두 번째 부분을 테스트합니다. 그것이 작동하면 최소한 의사 작성 코드가 작동 중임을 알 수 있으며 모든 문제는 토큰 또는 사용자가 가져 오는 방법과 관련이 있습니다.

일단 제대로 작동하면 첫 번째 부분에 대한 테스트를 만듭니다. 나는 우리 event.session.user.accesToken가 첫 번째 테스트에 사용되는 동작 시험을 토큰으로 설정과 함께 '이벤트'로 전달하는 하드 JSON 오브젝트 것 :

'use strict'; 
 

 
var token = '<valid token obtained from google account>'; 
 

 
let testEvent = { 
 
    'session': { 
 
    'user': { 
 
     'accessToken': token 
 
    } 
 
    } 
 
}