2017-12-11 11 views
0

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" 
    } 
} 
+0

Firebase機能を使用してこれを実行していますか?その場合は、Firebase機能コンソールからログを含めることができますか? – Prisoner

+0

'res.on( 'error'、err => {...})'ハンドラを追加して、そのエラーログを確認できますか? – Prisoner

+0

クラウド機能でOAuthスタイルの認証を行うことはできません。実行しているコードは、エンドユーザーのデスクトップ上で実行されていることが予想され、ブラウザにログインして情報にアクセスするようにアプリケーションを認証するよう求められます。 "127.0.0.1"というエラーの部分は、コードがlocalhost上のブラウザと通信しようとしていることを示唆しています。 –

答えて

0

私はあなたのコーディングのミスを発見しました。

タイプミス:

https.get({hostName: host, path: path}, (res) => { 

正しい:

https.get({host: host, path: path}, (res) => { 

上記を試してみてください。おかげさまで

+0

ありがとう、これは働いた!!あなたの助けをありがとう! – Masa

関連する問題