React + Slack:webClient()。oauth.v2无法正常工作

问题描述 投票:0回答:1

我想通过Slack身份验证获得channel information。在React + Slack官方库@slack/web-api中构建它。但是发生[[oauth_authorization_url_mismatch错误...

1)使用Slack登录2)重定向到回调URL(http://localhost:3000/auth/slack/callback)3)使用webClient()失败

错误:

Unhandled Rejection (Error): An API error occurred: oauth_authorization_url_mismatch

松弛的oauth范围:enter image description here添加到Slack:

<a href={slackAuthorizeUrl}> <button className="btn btnSlack"> <img src={`${process.env.PUBLIC_URL}/assets/slack.png`} alt="slack" /> <span>Integrate with Slack</span> </button> </a>

设置:

REACT_APP_SLACK_CLIENT_ID = 'XXXXXXXXXX' REACT_APP_SLACK_CLIENT_SECRET = 'XXXXXXXXXXXX' REACT_APP_SLACK_OAUTH_SCOPE = 'channels:read,chat:write:bot' export const slackAuthorizeUrl = `https://slack.com/oauth/authorize?scope=${process.env.REACT_APP_SLACK_OAUTH_SCOPE}&client_id=${process.env.REACT_APP_SLACK_CLIENT_ID}`;

获取信息

import { WebClient } from "@slack/web-api"; let urlParamStr = window.location.search; if (urlParamStr) { urlParamStr = urlParamStr.substring(1); let params = {}; urlParamStr.split("&").forEach(param => { const temp = param.split("="); params = { ...params, [temp[0]]: temp[1] }; const { code } = params; const result = new WebClient().oauth.v2.access({ client_id: clientId, client_secret: clientSecret, code }); console.log("result", result); }); }

javascript reactjs slack
1个回答
0
投票
似乎您正在使用授权URL https://slack.com/oauth/authorize的v1,但使用访问URL new WebClient().oauth.v2.access的v2,这将导致此错误。

尝试使用https://slack.com/oauth/v2/authorizeWebClient().oauth.access使两个调用使用相同的api版本。

© www.soinside.com 2019 - 2024. All rights reserved.