首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JSON post请求slack返回invalid_auth

JSON post请求slack返回invalid_auth
EN

Stack Overflow用户
提问于 2018-06-03 01:07:07
回答 1查看 3.6K关注 0票数 4

在用户按下按钮后,我试图通过google应用程序脚本在slack中打开一个对话框,但我收到了以下错误消息:

代码语言:javascript
运行
复制
{"ok":false,"error":"invalid_auth","warning":"missing_charset","response_metadata":{"warnings":["missing_charset"]}}

这是我的代码:

代码语言:javascript
运行
复制
function openDialog (range, triggerId, token) {
    var url = 'https://slack.com/api/dialog.open';
    var dialog = {
        trigger_id: triggerId,
        title: 'Submit a helpdesk ticket',
        callback_id: 'submit-ticket',
        submit_label: 'Submit',
        elements: [
            {
                label: 'Title',
                type: 'text',
                name: 'title',
                value: 'teste',
                hint: '30 second summary of the problem',
            },
            {
                label: 'Description',
                type: 'textarea',
                name: 'description',
                optional: true,
            },
            {
                label: 'Urgency',
                type: 'select',
                name: 'urgency',
                options: [
                    { label: 'Low', value: 'Low' },
                    { label: 'Medium', value: 'Medium' },
                    { label: 'High', value: 'High' },
                ],
            },
        ],
    };

    var options = {
        'method' : 'post',                  
        'contentType': 'application/json', 
        'headers': {
            'Authorization': 'Bearer ' +  token,
        },
        'payload' : JSON.stringify(dialog),
    };

    var urlFetch = UrlFetchApp.fetch(url, options);
    var message = ContentService.createTextOutput(urlFetch).setMimeType(ContentService.MimeType.JSON);

    return message; 
}

有人能发现我错过了什么吗?

谢谢

下面是触发openDialog()函数的doPost()函数,它使用callback_id = "gasolina"value = "update"从一个松弛的按钮中读取有效载荷:

代码语言:javascript
运行
复制
if (payload.callback_id == "gasolina") {
  var selectedOption = actions.value;
  var operation = payload.callback_id;
  var triggerId = payload.trigger_id;
  var token = payload.token;
  var inputRow = actions.name;
  if (selectedOption == 'update') {
    var keyword = 'no+money';
    var gastoExtra = '';
    var operation = payload.callback_id;
    var gastoExtraRange = actions.name;
    return openDialog (gasRange, triggerId, token); 
EN

回答 1

Stack Overflow用户

发布于 2018-06-03 09:14:05

我认为,尽管您的脚本几乎是正确的,但还是需要做一些修改。对你的脚本做这样的修改怎么样?从你的问题中,我不确定你目前使用dialog.open of Slack的设置。因此,这个修改后的脚本假定设置是正确的。

修改点:

  • missing_charset的原因是对有效负载使用JSON.stringify()
  • 来自the document of dialog.open,有效负载是tokendialog和header.
  • application/json不用于contentType.

不使用

当这些点反映到脚本中时,修改后的脚本如下所示。

修改后的脚本:

代码语言:javascript
运行
复制
function openDialog (range, triggerId, token) {
  var url = 'https://slack.com/api/dialog.open';
  var dialog = {
    title: 'Submit a helpdesk ticket',
    callback_id: 'submit-ticket',
    submit_label: 'Submit',
    elements: [
      {
        label: 'Title',
        type: 'text',
        name: 'title',
        value: 'teste',
        hint: '30 second summary of the problem',
      },
      {
        label: 'Description',
        type: 'textarea',
        name: 'description',
        optional: true,
      },
      {
        label: 'Urgency',
        type: 'select',
        name: 'urgency',
        options: [
          { label: 'Low', value: 'Low' },
          { label: 'Medium', value: 'Medium' },
          { label: 'High', value: 'High' },
        ],
      },
    ],
  };
  var options = {
    method: 'post',
    payload: {
      token: token,
      dialog: JSON.stringify(dialog),
      "trigger_id": triggerId,
    },
  };
  var urlFetch = UrlFetchApp.fetch(url, options);
  var message = ContentService.createTextOutput(urlFetch).setMimeType(ContentService.MimeType.JSON);
  return message; 
}

注意:

  • 在我的环境中,我使用dialog.open请求,就像上面的脚本一样。但如果此操作不起作用,请检查错误消息并修改设置。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50659252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档