slack-api - 从 Slack 请求消息范围
问题描述
我有一个 Slack 应用程序,直到昨天只有主要所有者才能发送消息。我询问了 Slack 团队如何解决这个问题,让所有用户都能够在 Slack 上发送消息。答案是首先使用 Sign in with Slack 按钮让他们登录。然后是另一个按钮,但范围不同。
我的问题是,我能够使用按钮以用户身份发送消息,如下所示:
<input type="button" value="Authenticate again to send Message" class="btn btn-warning" onclick="location.href = 'https://slack.com/oauth/authorize?scope=incoming-webhook,im:write,chat:write:user&client_id=xxyyzz'"/>
现在,我试图通过显示“请稍候”的视图在后台执行相同的额外范围请求
附上以下代码:
<script>
$.ajax({
method: "GET",
dataType: "json",
url: "@Url.Action(MenuItem, "SetupSlack")",
//data: { code: 'Model.Code' },
data: { code: '@Model' },
success: function(rsp) {
window.location.replace(rsp.redirect);
},
error: function() {
// Show error.
}
});
</script>
控制器代码如下:
public ActionResult SetupSlack(string code)
{
SlackAuthToken slackToken = slackService.GetAccessToken( clientId, clientSecret, code);
string redirectUrl;
if (slackToken.IsAuthenticated && slackToken.HasWrite)
{
Alert("Slack setup successfully!!!!", AlertLevel.Success);
redirectUrl = Url.Action(MenuItem, "Index");
}
else if (slackToken.IsAuthenticated)
{
redirectUrl = "https://slack.com/oauth/authorize?scope=incoming-webhook,im:write,chat:write:user&client_id=aabbcc";
}
else
{
Alert("Slack setup failed. Please try again, if the problem persists please contact support.", AlertLevel.Success);
redirectUrl = Url.Action(MenuItem, "Index");
}
return JsonNet(new { redirect = redirectUrl });
}
它不会导致发布消息身份验证页面。此外,另一个错误是将其“代码已使用”作为 OAuth 流中的响应之一。
有人能帮我一下吗。我使按钮工作正常,但这也应该工作。
解决方案
据我了解,让我尝试对您的问题给出更完整的答案。
要求
您有一个网站,并且您希望 Slack 团队的用户能够从该网站向 Slack 发送消息。
消息必须代表用户发送,而不是来自应用程序
解决方案
要进行身份验证并获取 Slack 用户 ID,用户需要使用“ Sign-in with Slack ”登录您的网站
当用户想要发送消息时,您的网站会检查其数据库以获取属于当前用户的访问令牌(松弛用户 ID 是密钥),然后使用该令牌通过 API 与chat.postMessage发送松弛消息
如果网站在其数据库中找不到当前用户的令牌,则需要创建令牌。为此,用户会看到一个按钮,该按钮启动Oauth 流程,Slack 请求所需的权限(例如“授予网站权限”)。创建令牌后,它将存储在网站的数据库中,因此此过程必须仅对每个用户运行一次。然后用户可以发送他的消息。
笔记
- 步骤 3 中的 Oauth 过程与为每个用户安装 Slack 应用程序基本相同。它被称为配置。仅当您的 Slack 团队的管理员已授予所有用户安装此特定 Slack 应用程序的权利时,这才有效
- 步骤 3 中的 Oauth 过程不能像您在问题中建议的那样在后台运行,因为它需要直接的用户交互。它始终要求用户首先登录,然后批准您的 Slack 应用程序请求的权限。
推荐阅读
- kubernetes - kops 验证集群因“读取集群配置错误”而失败?
- python - 从熊猫中的多索引日期获取频率表
- java - 如何解决由 firebase 的 `subscribeToTopic` 引起的 NoSuchMethodError?
- java - 如何用鼠标运动监听器制作一个移动的球
- c# - 如何将 .html url 后缀添加到 ASP.NET Core 2 中的所有 Razor 页面?
- python-3.x - 如何在 python3 virtualenv 中安装 plistlib?
- javascript - 基于ip位置的javascript时区调整
- python - 分解python列表,即从python列表创建变量
- jboss - 无法在 jboss AS 7.1.1 中部署 war 文件
- c# - 使用C#在MongoDB中插入collection2时如何更新collection1中的字段