通过 Slack OAuth 进行身份验证后如何识别现有用户?

Rya*_*yan 2 oauth-2.0 slack-api slack

我有一个包含现有用户和用户 ID(即不是 Slack 用户 ID)的 Web 应用程序。我想允许我的用户安装我的新 Slack 应用程序。

我如何知道哪些用户使用 OAuth 连接到 Slack 并安装我的应用程序?我知道您可以请求电子邮件,但如果 Slack 电子邮件与最初注册我的申请时使用的电子邮件地址不同怎么办?

了解哪些 Slack 用户与我的现有用户相关联至关重要。有没有办法通过 OAuth 流程发送现有用户的 user_id,以便我知道如何将 Slack 用户链接到我的其中一个用户?

潜在的解决方案?

  • 用户的 cookie 将允许我在 Slack OAuth 重定向时识别他们。
  • 使用该state变量来识别我网站上的用户

Eri*_*ken 5

我不会使用该state属性来传输用户信息。这在理论上是可能的,但会违背国有财产作为安全措施的目的。

相反,您只需要在 Oauth 过程中保留网站上的用户上下文(例如,通过将用户 ID 存储在服务器会话中),以便稍后存储自定义用户 ID 和 Slack 用户 ID 之间的连接。

这是完整的过程:

  1. 您的用户首先需要登录您的网站来识别自己的身份。
  2. 然后,您的网站将拥有用户的用户 ID,并且需要保留此上下文,例如在服务器会话中。
  3. 接下来,您的用户可以选择安装您的 Slack 应用程序。安装完成后,Oauth 进程会自动将您的用户重定向回您的网站。
  4. auth.test 然后,您可以通过使用刚刚收到的访问令牌进行调用来获取当前用户 ID 。
  5. 最后,拥有自定义用户 ID 和 Slack 用户 ID,可以存储此连接,例如在数据库中以供将来参考。或者,您可以将此信息作为自定义属性添加到 Slack 用户:users.profile.set