2017-12-01 3 views
0

나는 내 자신의 Gmail 사용자를 사용하여 공개 캘린더를 읽습니다. 로컬 작업 프로그램을 얻고, CONSOLE.LOG (내 토큰을 보호하기 위해 변경 값)으로 자격 증명/토큰을 표시 : 나는 또한 StackOverflow의이 말을 한AWS Lambda NodeJS - Google API에 대한 OAuth

Got Token 
OAuth2Client { 
    transporter: DefaultTransporter {}, 
    _certificateCache: null, 
    _certificateExpiry: null, 
    _clientId: 'xxxxxxxxxxxxxx', 
    _clientSecret: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 
    _redirectUri: 'urn:ietf:wg:oauth:2.0:oob', 
    _opts: {}, 
    credentials: 
    { access_token: 'xxxxxxx', 
    refresh_token: 'xxxxxxxxxxxxxxxxxx', 
    token_type: 'Bearer', 
    expiry_date: 1512151860704 } } 

: How to oAuth Google API from Lambda AWS?를하고 위의 표시로 나에게 같은 access_token이했다.

내가 이해한다면, 나는 액세스 토큰을 내 프로그램이나 파일에 넣어야하고, 어떻게해야할지 모르겠다. https://developers.google.com/google-apps/calendar/quickstart/nodejs

내가 내 client_secret.json 파일 또는 어떤 어딘가에이 토큰을 배치해야합니까 : 내 코드는 여기에 구글의 예에서왔다? TOKEN의 값으로 listEvents 메소드에 직접 전달하려고 시도했지만 "400 Bad Request"가 발생했습니다.

업데이트 1 :

exports.getCalendarJSONEventsNew = 
    function getCalendarJSONEvents(callback) { 
    console.log("started getCalendarJSONEventsNew"); 
    fs.readFile('OAuth2Client.json', 'utf8', 
     function processedFile(err, content) { 
      if (err) { 
      console.log('Error loading OAuth2Client.json: ' + err); 
      return; 
      } 

      console.log("content="); 
      console.log(content); 
      var tokenFromFile = JSON.parse(content); 
      listEvents(tokenFromFile, function(jsonResult) { 
         console.log("Json Callback Events="); 
         console.log(jsonResult); 
         callback(jsonResult); 
      }); 
    }); 

} 

오류 : 나는 다음과 같이 읽기 다음 파일을 디스크에 저장하고 시도 JSON 정확하게 할 수있을 것 같지 않기 때문에로 다시 역 직렬화하지 않는 방법 목적 :

OAuth2Client { 
^ 

SyntaxError: Unexpected token O in JSON at position 0 

업데이트 2 : 그럼, 나는

credentials: { 
    access_token: 'xxxxx', 
    refresh_token: 'xxxxxx', 
    token_type: 'Bearer', 
    expiry_date: 1512151860704 
} 
,691로 다음과 같은 또 다른 아이디어를 저장 한

을 .credentials/calendar-nodejs-quickstart.json으로 지정하십시오. 내가 서버에서 실행했을 때

다음, 나는 다시이 응답을 얻었다 :

Authorize this app by visiting this url: https://accounts.google.com/o/oauth2/auth?etc... 

답변

0

여기 내가 지금까지 일을하는 데 방법입니다.

1) 루트 디렉토리에 calendar-nodejs-quickstart.json 파일을 작성했습니다. .credentials/calendar-nodejs-quickstart.json을 읽을 때 계속 오류가 발생했습니다. 나는 환경 변수를 설정했지만, 다음과 같이 샘플 코드를 변경 결국 :

var TOKEN_DIR = '.credentials/'; 
var TOKEN_PATH = 'calendar-nodejs-quickstart.json'; 

2)를 제거하기 위해 "자격 증명"했다 파일의 처음부터, 그리고 따옴표를 추가 (도 작은 따옴표를 변경 따옴표로 묶으십시오). 이것은 다양한 JSON 파싱 오류를 극복하기위한 것입니다. 는 { 는 "access_token은": "의 xxxxx" "refresh_token도": "XXXX" "token_type": "베어러" "EXPIRY_DATE"1512151860704 }

3) I는 또한 'UTF8'를 추가 아래에, 그리고 무슨 일이 있었는지보기 위해 몇 가지 디버깅 코드를 추가 :

// Check if we have previously stored a token. 
    console.log("TOKEN_PATH=" + TOKEN_PATH); 
    fs.readFile(TOKEN_PATH, 'utf8', function(err, token) { 
    if (err) { 
     console.log("err=" + err); 
     getNewToken(oauth2Client, callback); 
    } else { 
     console.log("Use stored tokens from " + TOKEN_PATH); 
     console.log(token); 
     oauth2Client.credentials = JSON.parse(token); 
     callback(oauth2Client); 
    } 
    }); 

가 나에게 "잘못"변수의 값을 보여주기 위해 중요한 것 같다.