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

How to identify existing users after authenticating via Slack OAuth?

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

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

了解哪些 Slack 用户 link 我的现有用户是至关重要的。有没有办法通过 OAuth 流程发送我现有用户的 user_id,这样我就知道如何 link 一个 Slack 用户给我的一个用户?

可能的解决方案?

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

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

完整过程如下:

  1. 您的用户首先需要登录您的网站以识别 他们自己。
  2. 您的网站将拥有用户的用户 ID,需要保留 这种情况,例如在服务器会话中。
  3. 接下来,您的用户可以选择安装您的 Slack 应用程序。之后 安装完成后Oauth进程会自动 将您的用户重定向回您的网站。
  4. 然后您可以通过调用 auth.test 获取当前用户 ID 使用您刚刚收到的访问令牌。
  5. 终于有了可以存储的自定义用户 ID 和 Slack 用户 ID 这种联系,例如在您的数据库中以供将来参考。 或者,您可以将此信息添加到 Slack 用户,如下所示 自定义 属性 与 users.profile.set