React + Slack: webClient (). Oauth.v2 не работает - PullRequest
0 голосов
/ 25 февраля 2020

Я хотел бы получить channel information с аутентификацией Slack. Сборка в официальной библиотеке 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

Слабая область действия:
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);
  });
}

1 Ответ

0 голосов
/ 11 мая 2020

Похоже, вы используете v1 URL авторизации https://slack.com/oauth/authorize, но v2 URL доступа new WebClient().oauth.v2.access, что приведет к этой ошибке.

Попробуйте использовать https://slack.com/oauth/v2/authorize или WebClient().oauth.access для обоих вызовов используйте одну и ту же версию API.

...