我正在尝试将Slack集成到我的网站中,但遇到了一些麻烦。关键是在网站上,有人可以单击“使用Slack登录”并能够选择工作空间,登录并在该工作空间中选择频道以安装网站提供的应用程序。
我现在使用以下方式登录:
[Route("Account")]
public class AccountController : Controller
{
[Route("Login")]
[HttpGet]
public IActionResult Login(string returnUrl = "/")
{
return Challenge(new AuthenticationProperties() { RedirectUri = returnUrl });
}
}
和
options.Events = new OAuthEvents
{
OnCreatingTicket = async context =>
{
var request = new HttpRequestMessage(HttpMethod.Get, context.Options.UserInformationEndpoint);
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", context.AccessToken);
var response = await context.Backchannel.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, context.HttpContext.RequestAborted);
response.EnsureSuccessStatusCode();
var userInfo = JObject.Parse(await response.Content.ReadAsStringAsync());
// var channelInfo = JObject.Parse(await response.Content.ReadAsStringAsync());
// Will read the hannel info and find the webhook url and stuff
context.RunClaimActions(userInfo);
}
};
但是现在我正在读取的JSON仅获取用户信息。如何创建内容,以便它还会提示您选择频道?
答案 0 :(得分:0)
选择频道不是安装Slack应用的标准过程的一部分。
因此,我建议将此内容添加到您的网站上,作为用户安装流程的一部分。由于您将需要一个有效的访问令牌来获取频道列表,因此最好在安装了Slack应用之后进行此交互。
然后调用Slack API方法channels.list来获取所有公共频道的列表,然后向用户显示选择一个公共频道的选项,例如带有一个下拉框。