2017-12-01 14 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はを与えました。

私が理解すれば、私はアクセストークンを持って自分のプログラムやファイルに入れなければなりません。どうすればいいのか分かりません。私のコードは、ここのGoogleの例から来たものです: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 
} 
として以下を保存しました

を.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)私はまた、 '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); 
    } 
    }); 

"err"変数の値を表示するためには非常に問題があるようです。

関連する問題