Single sign on &引用;使用Slack“登录”;每次都不断提示用户权限
我正在为我的网站进行Slack集成,包括允许用户使用“使用Slack登录”按钮登录。理想情况下,我希望它只要求用户授予Single sign on &引用;使用Slack“登录”;每次都不断提示用户权限,single-sign-on,slack,slack-api,Single Sign On,Slack,Slack Api,我正在为我的网站进行Slack集成,包括允许用户使用“使用Slack登录”按钮登录。理想情况下,我希望它只要求用户授予身份。*权限一次,然后下次当他们单击“使用Slack登录”时,授权屏幕应该只闪烁然后重定向到下一步(例如Facebook),但它会一直显示授权屏幕,用户必须单击“继续”按钮一次又一次地授予权限。这对我们的用户来说很不方便。有没有办法让它像Facebook一样只提示一次?仅供参考,我的应用程序尚未公开分发到应用程序目录,这可能是原因吗?不,这与位于公共应用程序目录无关 Slack
身份。*
权限一次,然后下次当他们单击“使用Slack登录”时,授权屏幕应该只闪烁然后重定向到下一步(例如Facebook),但它会一直显示授权屏幕,用户必须单击“继续”按钮一次又一次地授予权限。这对我们的用户来说很不方便。有没有办法让它像Facebook一样只提示一次?仅供参考,我的应用程序尚未公开分发到应用程序目录,这可能是原因吗?不,这与位于公共应用程序目录无关
Slack Sign-in不像其他OAuth提供商doe那样缓存用户登录,因此,如果您希望避免用户每次必须在应用程序中缓存用户权限时都必须登录。e、 g.使用cookies
以下是它的工作原理:
团队id
和用户id
就足够了。但成功登录后,您还将收到该用户的新access\u令牌
(与应用程序的access\u令牌
不同)。(请参阅下面的完整示例,了解您从Slack获得的信息)
请记住,Cookie存储在客户端本地,用户可以查看。因此,根据您的安全需求,建议不要将任何与用户相关的信息(尤其是access\u令牌
)直接存储在cookie中。而是存储一个ID,该ID链接到应用程序存储在服务器上的数据。(有其他方法解决这个问题。但这是一个不同的讨论)
以下是成功登录后从Slack收到的信息示例:
{
"ok": true,
"access_token": "XXXX",
"scope": "identity.basic",
"user":
{
"id": "U12345678",
"name": "Donald Dummy"
}
"team":
{
"id": "T12345678"
}
}
你建议我缓存什么?我有我们自己网站的身份验证令牌,但缓存它意味着让用户保持登录,当用户注销并想重新登录时就是这种情况。slack的授权码仅在10分钟内有效,因此缓存它们不起作用。访问令牌存储在db中,但用户必须再次提供身份证明(授权码)才能使用该访问令牌。因此,我预计,在用户首次授予身份权限后,下次用户单击“使用Slack登录”按钮时,他们仍应被带到Slack的oauth页面,slack将检查并查看此用户是否已授予我们
标识。*
权限,并立即将新授权代码返回到我们的重定向uri,而不显示屏幕并让用户单击“继续”。我需要做些什么来实现这种行为,或者说这是可能的?很清楚:Slack不会为您缓存用户登录,您必须自己在应用程序中实现这一点。请参阅我的答案,了解它在原则上是如何工作的。感谢您花时间回答我的问题,但很抱歉,这不是我要问的问题。我已经有了一种使用JWT令牌存储用户“登录”状态的方法,所以这不是我所关心的。我的意思是,当用户注销,然后使用“使用Slack登录”按钮再次登录时,他们必须进入Slack的授权屏幕并再次单击“继续”,而我希望它像Facebook一样,跳过屏幕并立即授予授权,而不要求用户再次单击按钮。2019年是否仍然如此?因为文档中说:“如果用户只是简单地登录以恢复与Slack应用程序的现有关系,我们将立即将其发送到您的重定向URL。”
这告诉我它应该像facebook和其他人一样自动,但它不是。。。。您是否确定这是由于应用程序未发布造成的?我也有这个问题,同样地,在登录过程中只要求identity.basic
,如文档中所述()这不是因为应用程序未发布,至少在当时,没有办法避免出现确认屏幕。我不确定Slack是否已经更改了它,直到现在。它似乎仍然会在每次登录时请求许可。相当令人失望。