Javascript 对slack的JSON post请求返回无效的\u auth
在用户按下按钮后,我试图通过google应用程序脚本在slack中打开一个对话框,但我收到以下错误消息:Javascript 对slack的JSON post请求返回无效的\u auth,javascript,json,google-apps-script,slack,slack-api,Javascript,Json,Google Apps Script,Slack,Slack Api,在用户按下按钮后,我试图通过google应用程序脚本在slack中打开一个对话框,但我收到以下错误消息: {"ok":false,"error":"invalid_auth","warning":"missing_charset","response_metadata":{"warnings":["missing_charset"]}} 这是我的代码: function openDialog (range, triggerId, token) { var url = 'https://
{"ok":false,"error":"invalid_auth","warning":"missing_charset","response_metadata":{"warnings":["missing_charset"]}}
这是我的代码:
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\u id=“gasolina”
和value=“update”
从处于松弛状态的按钮读取有效负载:
我认为,虽然您的脚本几乎是正确的,但需要稍加修改。对你的脚本进行这样的修改怎么样?根据您的问题,我不确定您当前使用dialog.open of Slack的设置。所以这个修改过的脚本假设设置是正确的 修改点:
缺少\u字符集的原因是由于对负载使用了
JSON.stringify()
- 从中,有效负载是
,令牌
和对话框
触发器id
不用于标头标记
不用于application/json
contentType
- 在我的环境中,我使用dialog.open和上面的脚本一样的请求。但是如果这不起作用,请检查错误消息并修改您的设置
{“ok”:false,“error”:“invalid_auth”}
@Mário Guidoux给您带来的不便,我真的很抱歉。发现您的错误已更改。从的文档中,invalid_auth
表示身份验证的某些方面无法验证。提供的令牌无效,或者请求来自不允许发出请求的IP地址。
。请您再确认一下好吗。@Mário Guidoux我也已经确认,这个修改过的脚本在正确的设置下工作正常。但正如我所说,我不确定您使用dialog.open的设置。我可以问一下您的设置的详细信息吗?如果可以,请通过更新问题来添加详细流程。这样,我就能想出解决你错误的办法。我想解决您的问题。谢谢您的持续支持!在触发openDialog()的doPost()函数下面可以找到:if(payload.callback\u id==“gasolina”){var selectedOption=actions.value;var operation=payload.callback\u id;var triggerId=payload.trigger\u id;var token=payload.token;var timeStampRange=actions.name;if(selectedOption==“update”){var keyword='no+money';var gastoExtra='';var operation=payload.callback\u id;var gastoExtraRange=actions.name;return openDialog(gasRange,triggerId,token);}@MárioGuidoux我遇到了无效的身份验证问题。您能修复它吗?似乎没有任何关于这方面的有用文档:(
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);
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;
}