【问题标题】:Slack oauth.access API returns bad_redirect_uri without requesting a redirect_uriSlack oauth.access API 返回 bad_redirect_uri 而不请求 redirect_uri
【发布时间】:2019-03-12 10:51:26
【问题描述】:

尝试使用 slack 为自定义应用设置 oAuth,而 slack 的 API 返回 {"ok":false,"error":"bad_redirect_uri"}。我没有为 oauth.access 设置重定向,即使我设置了一个,我仍然会遇到同样的错误。

应用程序配置为允许本地主机和公共域。

这是我正在做的请求

const res = await request({
  method: 'post',
  uri: 'https://slack.com/api/oauth.access',
  auth: {
    user: process.env.SLACK_CLIENT_ID,
    pass: process.env.SLACK_CLIENT_SECRET,
  },
  form: {
    code,
    // redirect_uri: 'http://localhost:3100',
  },
});

为了启动身份验证流程,我从浏览器调用此 URL:

https://slack.com/oauth/authorize?client_id=XXX&scope=commands,im:read,im:write&redirect_uri=http://localhost:3100/integrations/slack.request&state=ID

【问题讨论】:

    标签: javascript oauth slack slack-api


    【解决方案1】:

    您不能使用localhost 作为redirect_uri。

    如果您想在本地 PC 上使用 OAuth,我建议您安装一个像 ngrok 这样的 VPN 隧道,它可以让您以相对安全的方式将本地 PC 暴露到 Internet。在official Slack tutorials 之一中也提到了 ngrok,作为如何使用 Slack 设置本地开发环境的示例。

    还要确保您的 PC 上安装了网络服务器。

    【讨论】:

    • 如果没有redirect_uri,我不能执行此请求吗?松弛的文档说它是可选的? api.slack.com/methods/oauth.access
    • 没有。通过可选,它们意味着您不需要指定该参数,然后它将仅采用您在 Slack 应用程序 Oauth 设置中指定的 URL。但是 Oauth 进程始终需要您的应用的 URL,以便在用户登录后可以访问它
    • 啊,好吧,然后看看 ngrok。谢谢
    • 该 uri 需要指向什么?只是您的应用程序的根目录还是需要返回某些内容,我的应用程序的根目录不返回任何内容,所以不确定重点或目的是什么。
    • @user901790 该 URI 需要指向处理 OAuth 流的 Web 应用程序的路由。如此处所述:api.slack.com/docs/oauth
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-11
    • 2020-11-12
    • 2020-07-30
    • 2021-06-27
    相关资源
    最近更新 更多