如何将松弛整合到网站中

时间:2018-07-09 01:22:34

标签: c# asp.net slack-api

我正在尝试将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仅获取用户信息。如何创建内容,以便它还会提示您选择频道?

1 个答案:

答案 0 :(得分:0)

选择频道不是安装Slack应用的标准过程的一部分。

因此,我建议将此内容添加到您的网站上,作为用户安装流程的一部分。由于您将需要一个有效的访问令牌来获取频道列表,因此最好在安装了Slack应用之后进行此交互。

然后调用Slack API方法channels.list来获取所有公共频道的列表,然后向用户显示选择一个公共频道的选项,例如带有一个下拉框。