【问题标题】:Alexa node.js http request with authorization具有授权的 Alexa node.js http 请求
【发布时间】:2017-04-14 07:55:14
【问题描述】:


我正在为 Amazon Alexa 实施一项技能。我想确定用户的地理位置,但 http.get 请求不起作用。我在邮递员中尝试了请求,我得到了想要的结果,但无法弄清楚可能是什么问题。请求 url 应该是这样的https://api.amazonalexa.com/v1/devices/{deviceId}/settings/address,带有授权标头Authorization: Bearer {token}
这是我的代码

try{
    var body = "";
    console.log('Authorization ', consentToken);
    var response = '';

    var options = {
      host: 'api.eu.amazonalexa.com',
      path: '/v1/devices/'+deviceId+'/settings/address',
      port: '443',
      headers: {'Authorization': "Bearer "+consentToken},
      method: 'GET'
    };       

    https.get(options, function(res) {
         console.log('status', res.statusCode);
         if (res.statusCode >= 200 && res.statusCode < 400) {
           res.on('data', function(data_) { response += data_.toString(); });
           res.on('end', function() {
             var data = JSON.parse(response);
             console.log('data', data);
             if (data.length > 0)
                 userLocation = data;
           });
         }
       }).on('error', function(e) {
                console.log("errrrror",e);
       }).on('uncaughtException', function (err) {
                console.log('uncaughtException',err);
       });
  }
  catch(error) { 
        console.log('getAndProcessUserLocation',error);
}   

我不知道为什么 https.get 没有被执行。没有抛出错误,但我无法从中获取任何日志。
我遵循官方网站上的文档 https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/device-address-api

【问题讨论】:

  • 在您提到https://api.amazonalexa.com/v1/device... 的问题中,我在您的代码中看到api.eu.amazonalexa.com... 这是正确的吗?

标签: javascript node.js http request alexa-skills-kit


【解决方案1】:

没有看到您的其余代码,我的猜测是您没有向 Alexa 请求指示您正在异步处理它,因此会话在请求完成之前结束。

【讨论】:

  • 处理异步请求时的最佳做法是什么?
  • 这取决于您使用的 Alexa SDK 或框架。我正在使用 alexa-app,在该框架中,我只需要从意图处理程序返回一个 Promise。
猜你喜欢
  • 2015-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-04
  • 2015-03-08
  • 2021-10-17
  • 2021-04-26
  • 1970-01-01
相关资源
最近更新 更多