繁体   English   中英

Dialogflow的Fullfilment逻辑无法获取Google帐户信息

[英]Dialogflow's Fullfilment logic can not get Google account information

我想使用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来获取用户信息。

https://www.googleapis.com/oauth2/v1/userinfo?access_token=foo_bar

但是,如果我在实现上访问上述URL,则会发生上述错误。 以下定义有误吗?

*使用Fullfilment,其逻辑在index.js中进行了描述。

* 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);
      });
    });
  });
}

* 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"
  }
}

我发现您的编码错误。

错别字:

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

正确:

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

请尝试以上。 谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM