Oauth 同时";添加到“松弛”;及;使用Slack“登录”;

Oauth 同时";添加到“松弛”;及;使用Slack“登录”;,oauth,slack,slack-api,Oauth,Slack,Slack Api,我正在开发一个Slack应用程序,它还与一个web应用程序链接,用户可以使用Slack登录。新用户通常需要登录web应用程序并将应用程序添加到Slack 我想让他们通过一次OAuth来完成这项任务。由于web应用程序需要每个用户的姓名、电子邮件地址和个人资料图片,我将“identity.basic”、“identity.email”等范围添加到“Add to Slack”按钮所请求的范围中。但事实证明,Slack不允许这样做。松弛OAuth页面显示“请求的权限无效:不能同时请求标识作用域和其他作

我正在开发一个Slack应用程序,它还与一个web应用程序链接,用户可以使用Slack登录。新用户通常需要登录web应用程序并将应用程序添加到Slack

我想让他们通过一次OAuth来完成这项任务。由于web应用程序需要每个用户的姓名、电子邮件地址和个人资料图片,我将“identity.basic”、“identity.email”等范围添加到“Add to Slack”按钮所请求的范围中。但事实证明,Slack不允许这样做。松弛OAuth页面显示“请求的权限无效:不能同时请求标识作用域和其他作用域”

一种替代方法是请求users:read和users:read.email作用域,而不是identity作用域。但这给了我们的应用程序更多的访问权限;它只需要当前用户的信息,而不是团队中的所有用户的信息。(以后所有用户可能都需要这些信息,所以我正在考虑这样做,但我不确定用户是否愿意。)

另一种选择似乎是让用户通过两个不同的OAuth权限屏幕。但是这看起来很麻烦,而且不是一个好的用户体验

所以问题是(1)是否有更好的方法,以及(2)为什么Slack不允许将标识范围与其他范围相结合

更新以澄清@erik kalkoken的回答:

我知道“添加到Slack”和“使用Slack登录”之间的区别。我当然不打算取消大多数用户使用Slack进行简单“登录”的选项。然而,对于这个特定的应用程序,在没有登录到web应用程序的情况下执行“添加到Slack”是没有意义的。在团队中的其他用户可以使用它之前,每个Slack团队需要一个人来完成这项工作。我们新团队的入职流程有点麻烦,我正在寻找更简单、更顺畅的方法。由于登录和添加步骤理论上可以合并为一个步骤,因此我更愿意这样做

部分原因可能是我们没有开发“松弛应用”;我们正在开发一个web应用程序的松弛集成。web应用程序可以在不使用Slack的情况下使用,并且有自己的用户和社区概念。

我认为“更好的方法”是不要在网站上结合这两种功能,因为它们的效果非常不同。我想说的是,如果将它们结合在一起,会让用户感到困惑,不会带来良好的用户体验

“添加到Slack”是为整个Slack团队安装Slack应用程序。您只需执行一次,通常由松弛团队的管理员执行


“使用Slack登录”用于验证Slack团队的任何用户。每次登录应用程序时,您都会使用此功能,Slack团队的许多用户都会使用此功能。

是的,我理解其中的区别。我对这个问题作了一些澄清。不过,我怀疑没有更好的选择,Slack也不太可能改变他们的API来适应我们。只要我只要求
标识。*
作用域,我就不会收到“请求的权限无效”错误(本页提供列表)我也遇到了同样的问题——一个slack应用程序,它的行为类似于一个机器人,但也需要实现OAuth,这样每个用户都可以验证其slack
user\u id
,并将其与应用程序上的唯一身份关联起来。我们也是一个类似于您上面描述的松弛集成场景。我有一个支持请求线程与slack一起运行,以找出我做错了什么,如果我找到了解决方案,将向您报告。