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

时间:2018-07-01 23:25:45

标签: oauth-2.0 slack slack-api

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

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

关键是要知道哪些Slack用户已链接到我的现有用户。是否可以通过OAuth流程发送现有用户的user_id,以便我知道如何将Slack用户链接到我的一个用户?

潜在的解决方案?

  • 用户的cookie将允许我根据Slack OAuth进行识别 重定向。
  • 使用state变量来识别我的用户 网站

1 个答案:

答案 0 :(得分:3)

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

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

这是完整的过程:

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