首页 > 解决方案 > dialogflow api 中缺少 401 个未经授权的身份验证参数

问题描述

我使用 Dialogflow api v1 开发了聊天机器人。代码没有变化。但是,现在来自服务器的响应是“code”:401,“errorType”:“unauthorized”,“errorDetails”:“缺少身份验证参数。我使用以下网址检查了 Postman。https: //api.dialogflow.com /v1/query?v=519794&lang=en&query=hi&sessionId=519794&Content-Type=application/json并在不记名令牌中提供了我的客户端访问令牌。当我尝试使用 post 方法时出现错误。但是,当我使用 GET 方法时它起作用了邮递员。所以,我在我的 javascript 代码中尝试了相同的代码并得到 401 未经授权的错误。这里有什么问题?

标签: dialogflow-es

解决方案


我已经使用以下代码解决了这个问题。

在 Ajax 调用中使用 GET 方法而不是 POST 并在 data 参数中删除 JSON.stringify。

var text = "你好"; var iRandom = Math.floor((Math.random() * 10000000) + 1);

$.ajax({

       type: "GET",

       url: "https://api.api.ai/v1/query?v=324233",

       contentType: "application/json; charset=utf-8",

       dataType: "json",

       headers: {

       "Authorization": "Bearer "+accessToken

        },

   data: { query: text, lang: "en", sessionId: iRandom},

   success: function(data) {
        //desired action              
         },

       error: function() {

         console.log("Internal Server Error");

      }

   });

另一种替代解决方案:

我保留了早期版本。

var iRandom = Math.floor((Math.random() * 10000000) + 1);

类型:POST,数据:JSON.stringify({ query: text, lang: "en", sessionId: iRandom}),

我没有将 iRandom 作为数字传递,而是将其作为字符串传递,并且能够从对话流中获得响应。


推荐阅读