获取用户的 API 密钥以在 Slack 中使用
Get a user's API key for using in Slack
所以我正在构建一个小型 Slack 机器人,我希望多个用户能够在不同的 Slack 团队中使用它。到目前为止的工作流程是这样的:
- 用户在网站上注册。
- 用户连接到 API 提供商并接收他们的 OAuth 凭据。每个用户的访问令牌都保存在数据库中。
- 用户将 Slack 机器人添加到他们的团队。
使用硬编码的 API 值,机器人可以检索所需的数据,但是机器人能够为每个 Slack 团队获取适当数据的最佳方式是什么?
我显然不希望用户需要继续登录网站等,那么我如何将 slack 团队与 Laravel 用户相关联,然后提取相关的 API 数据?
对于一些示例代码,假设我在我的数据库中为用户存储了一个 Strava 访问令牌,我想调用 API:
$botman->hears('runstats', function ($bot) {
$payload = \Strava\Account::get(
\Auth::user()->strava_id,
array('api_key' => "here_is_a_secret_key")
);
$bot->reply($payload->monthly_kms);
当我登录到我的网站并从我的 Web 界面查询时,这工作正常,它返回 123km
作为示例。
显然,当我登录 Slack 时,没有 Auth::user
实例,因此它找不到相关的 Strava ID。这就是我希望能够为相关 Slack 用户检索的内容。我设想它被安装在多个 Slack 工作区中。
您需要在数据库中为每个 API 存储 Slack 用户(带有团队 ID、用户 ID)和他的个人令牌之间的关系。
所以在添加新的 API 代币时你有两个选择:
- 确保为 API 服务添加新令牌的过程始终在 Slack 上启动(例如使用斜线命令),然后将用户转发到您的网页。因此,您的应用知道它是哪个用户。
- 让用户使用他们的 Slack 凭据登录您的网页(使用 Slack Sign-in)。
当然,这两个选项都要求您的 Slack 应用程序之前已安装到相关团队。
所以我正在构建一个小型 Slack 机器人,我希望多个用户能够在不同的 Slack 团队中使用它。到目前为止的工作流程是这样的:
- 用户在网站上注册。
- 用户连接到 API 提供商并接收他们的 OAuth 凭据。每个用户的访问令牌都保存在数据库中。
- 用户将 Slack 机器人添加到他们的团队。
使用硬编码的 API 值,机器人可以检索所需的数据,但是机器人能够为每个 Slack 团队获取适当数据的最佳方式是什么?
我显然不希望用户需要继续登录网站等,那么我如何将 slack 团队与 Laravel 用户相关联,然后提取相关的 API 数据?
对于一些示例代码,假设我在我的数据库中为用户存储了一个 Strava 访问令牌,我想调用 API:
$botman->hears('runstats', function ($bot) {
$payload = \Strava\Account::get(
\Auth::user()->strava_id,
array('api_key' => "here_is_a_secret_key")
);
$bot->reply($payload->monthly_kms);
当我登录到我的网站并从我的 Web 界面查询时,这工作正常,它返回 123km
作为示例。
显然,当我登录 Slack 时,没有 Auth::user
实例,因此它找不到相关的 Strava ID。这就是我希望能够为相关 Slack 用户检索的内容。我设想它被安装在多个 Slack 工作区中。
您需要在数据库中为每个 API 存储 Slack 用户(带有团队 ID、用户 ID)和他的个人令牌之间的关系。
所以在添加新的 API 代币时你有两个选择:
- 确保为 API 服务添加新令牌的过程始终在 Slack 上启动(例如使用斜线命令),然后将用户转发到您的网页。因此,您的应用知道它是哪个用户。
- 让用户使用他们的 Slack 凭据登录您的网页(使用 Slack Sign-in)。
当然,这两个选项都要求您的 Slack 应用程序之前已安装到相关团队。