【问题标题】:Slack API returning with invalid_auth when running GET from HTML?从 HTML 运行 GET 时,Slack API 返回 invalid_auth?
【发布时间】:2022-01-03 18:33:07
【问题描述】:

我在测试工作区中创建了一个 Slack Bot 来玩。我要做的就是运行一个 GET API 来收集频道的内容,但我在第一个障碍中绊倒了......

API = GET https://slack.com/api/conversations.history

变量:

  1. 令牌=xoxb-xxxx...AwQ
  2. 频道= xxxxH9P
  3. 机器人是added to the channel
  4. 我添加了正确的Scopes
  5. 使用 Tester API here 确实有效!

但是我自己的 HTML 代码失败了……返回 invalid_auth……所以我想这一定是我的 HTML 的问题……但问题是,完全相同的代码适用于我之前设置的另一个 slack 机器人!

基本的 HTML:

    <html>
    <head>
    </head>
    <body>

    <button id = "SendButton" onclick="GetChannelFromSlack()">GET</button>
    <p id="GET API Output">Test</p>

    </body>

    <script>
    function GetChannelFromSlack() {
        var slackBotToken = "xoxb-xxxxAwQ";
        var slackChannelID = "xxxxH9P";

        var getSlackData = new XMLHttpRequest();
        var url = new URL('https://slack.com/api/conversations.history?token='+slackBotToken+'&channel='+slackChannelID);   
            
        getSlackData.open( "GET", url, true );
        //getSlackData.setRequestHeader = ('Authorization', 'Bearer xoxb-xxxxAwQ'); 
        getSlackData.responseType = 'json';
        
        getSlackData.send();
        
        getSlackData.onload = function() { 
            var jsonResponse = getSlackData.response;
            document.getElementById("GET API Output").innerHTML = JSON.stringify(jsonResponse);
        }
    }

    </script>
    </html>

(代码 sn-p 实际上无法工作,因为我没有输入我的实际机器人令牌/频道 ID)

编辑此外,为了隔离问题 - 这是一个 curl 命令,适用于一个机器人/频道,但不适用于另一个:

工作: curl -X GET 'https://slack.com/api/conversations.history?token=xoxb-xxx-VKa&channel=CxxxxTX'

不工作: curl -X GET 'https://slack.com/api/conversations.history?token=xoxb-xxx-AwQ&channel=Cxxxx9P'

我看不出这两个机器人的设置有什么不同...

如果有人能找出失败的原因,我将不胜感激!

问候, 丹恩

【问题讨论】:

  • 来自docs:令牌应作为HTTP 授权标头 或作为POST 参数 传递。您作为 GET 参数传递。
  • 感谢詹姆斯的回复!我在文档中也看到了这一点。这个 API 绝对是一个 GET .. 你可以在注释掉的行中看到,我也尝试将令牌作为标题包含:( getSlackData.setRequestHeader = ('Authorization', 'Bearer xoxb-xxxxAwQ') ;)

标签: javascript html api bots slack


【解决方案1】:

仅使用 curl 进一步调查,我能够使用以下格式通过任一机器人/通道获取输出:

curl -H "授权:承载 xoxb-xxxxxAwQ" -X GET 'https://slack.com/api/conversations.history?channel=CxxxxTX'

我仍然不清楚为什么其他 API 调用格式适用于我的原始机器人,但我很高兴接受并使用这种格式,并相应地调整 HTML 代码。

谢谢! 丹恩

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多