【问题标题】:Token Type not allowed when using simple-slack-api to connect with "xoxb-...." bot token to Slack使用 simple-slack-api 将“xoxb-....”机器人令牌连接到 Slack 时,令牌类型不允许
【发布时间】:2021-05-11 08:12:41
【问题描述】:

我正在使用https://github.com/Itiviti/simple-slack-api 并尝试使用以 xoxb- 开头的令牌(称为 Bot User Auth Access Token)连接到 Slack

var session = SlackSessionFactory.createWebSocketSlackSession("xoxb-....");
session.connect();

Connect 获得“not_allowed_token_type”响应,然后导致异常:

Caused by: java.net.ConnectException: not_allowed_token_type
    at com.ullink.slack.simpleslackapi.impl.SlackWebSocketSessionImpl.connectImpl(SlackWebSocketSessionImpl.java:338) ~[simple-slack-api-1.2.0.jar:na]
    at com.ullink.slack.simpleslackapi.impl.SlackWebSocketSessionImpl.connect(SlackWebSocketSessionImpl.java:292) ~[simple-slack-api-1.2.0.jar:na]

配置的机器人范围是聊天:写,反应:读和反应:写。

机器人/应用程序安装在工作区中。

如何连接到 Slack 以及使用什么令牌?

【问题讨论】:

  • 可能 API 实现过时,不支持具有精细权限的新 Bot API。
  • 是的,它是从 2017 年开始的......你不会对那个库走得太远。
  • 确保您的 slack bot 身份验证令牌正确。

标签: java api bots slack


【解决方案1】:

您所指的 API 实现已更新,不支持具有精细权限的新 Bot API。详情请参考github-issue。

但是,如果您想通过 bot 将消息直接发送到您的 Slack 频道,您可以使用为您的 Workspace 配置的 Webhook URL。但在您尝试之前,请确保您的机器人已添加到频道中,并且 webhook URL 已正确配置。详情请参考incoming-webhooks。

请参阅以下代码,该代码在调用时向松弛通道发送问候消息 Hello, World!。

import java.io.IOException;
import java.util.Map;

import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.web.client.RestTemplate;

public class Slack {

    private final static Logger logger = LoggerFactory.getLogger(AppController.class);

    public static void main(String[] args) throws IOException
    {   
        try {
            String webhook_url = "https://hooks.slack.com/services/XXXXXXXXX/B0XXXXUXXX/XXXXXXXXXXXXXX";

            RestTemplate restTemplate = new RestTemplate();

            HttpHeaders httpheaders = new HttpHeaders();
            httpheaders.set("Content-Type","application/json");
            httpheaders.add("Accept", "application/json");

            JSONObject payload = new JSONObject(); 
            payload.put("text","Hello, World!");

            HttpEntity<String> httppentity = new HttpEntity<String>(payload.toString(),httpheaders);

            String response = restTemplate.exchange(webhook_url, HttpMethod.POST,httppentity,String.class).getBody();
            
            logger.info(response);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

您将在您的频道中看到一条问候消息,例如:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 2018-11-10
    • 1970-01-01
    • 2020-12-26
    • 2020-07-25
    • 2019-04-07
    • 2021-07-28
    相关资源
    最近更新 更多