DialogflowのFullfilmentロジックでGoogleアカウント情報を取得したいが、次のエラーが発生する。DialogflowのFullfilmentロジックがGoogleアカウント情報を取得できない
Error: connect ECONNREFUSED 127.0.0.1:443 at
Object.exports._errnoException (util.js:1020:11) at
exports._exceptionWithHostPort (util.js:1043:20) at
TCPConnectWrap.afterConnect [as oncomplete] (net.js:1090:14)
アカウントのリンクが設定されています。クライアント側では、Googleアカウントで認証されています。 ブラウザで次のURLを実行して、ユーザー情報を取得できます。私は、フルフィルメントで上記のURLにアクセスしている場合
https://www.googleapis.com/oauth2/v1/userinfo?access_token=foo_bar
しかし、上記のエラーが発生します。 以下の定義に間違いがありますか?
* Fullfilmentを使用すると、ロジックはindex.jsに記述されます。
*は
'use strict';
const App = require('actions-on-google').DialogflowApp;
exports.testFunc = (req, res) => {
const app = new App({request:req, response:res});
let accessToken = app.getUser().accessToken;
console.log('accessToken is ' + accessToken);
getUserInfo(accessToken).then((output) => {
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify({ 'speech': output, 'displayText': output }));
}).catch((error) => {
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify({ 'speech': error, 'displayText': error }));
});
};
function getUserInfo (accessToken) {
return new Promise((resolve, reject) => {
let https = require('https');
let host = 'www.googleapis.com';
let path = '/oauth2/v1/userinfo?access_token=' + accessToken;
console.log('API Request: ' + host + path);
https.get({hostName: host, path: path}, (res) => {
let body = ''; // var to store the response chunks
res.on('data', (d) => {
body += d;
console.log('data: ' + body);
}); // store each response chunk
res.on('end',() => {
console.log('end');
let output = `response`;
console.log(output);
resolve(output);
});
res.on('error', (error) => {
reject(error);
});
});
});
}
をindex.js * package.json
{
"name": "testFunc",
"engines": {
"node": "~4.2"
},
"dependencies": {
"actions-on-google": "^1.0.0",
"firebase-admin": "^4.2.1",
"firebase-functions": "^0.5.7"
}
}
Firebase機能を使用してこれを実行していますか?その場合は、Firebase機能コンソールからログを含めることができますか? – Prisoner
'res.on( 'error'、err => {...})'ハンドラを追加して、そのエラーログを確認できますか? – Prisoner
クラウド機能でOAuthスタイルの認証を行うことはできません。実行しているコードは、エンドユーザーのデスクトップ上で実行されていることが予想され、ブラウザにログインして情報にアクセスするようにアプリケーションを認証するよう求められます。 "127.0.0.1"というエラーの部分は、コードがlocalhost上のブラウザと通信しようとしていることを示唆しています。 –