Slack Запрос разрешений для пользователя - PullRequest
0 голосов
/ 17 февраля 2019

Я пытаюсь получить некоторые истории разговоров из слабины с помощью Node API, и в данный момент я немного борюсь с разрешениями.Для чтения частных каналов и т. Д. Я считаю, что мне нужно делать все запросы с X-Slack-Use.Но прежде чем я смогу это сделать, мне нужно, чтобы пользователь аутентифицировал приложение.

Я создал новую команду Slash , /digest, которая отправляет запрос в мое приложение.Затем мне нужно выдать следующее, чтобы запросить разрешения:

const response = await this.slackWebClient.apps.permissions.request({
      token: ...,
      scopes: ["channels:history", "channels:read", "groups:history", "groups:read", "im:read"],
      trigger_id: triggerID,
      user: userID,
});

Я думаю, что моя проблема заключается в получении правильного токена.Входящий запрос имеет токен:

[Object: null prototype] {
      token: 'yM....R',
      team_id: 'TD.....E',
      team_domain: '...',
      channel_id: 'CF.....B',
      channel_name: 'email_digest_test',
      user_id: 'UD.....Y',
      user_name: 'Ian',
      command: '/digest',
      text: '',
      response_url: 'https://hooks.slack.com/commands/TD.....E/55....62/cw....Eq',
      trigger_id: '553.....45......6.bb.............719' }

Однако, если я пытаюсь использовать это, я получаю сообщение об ошибке:

код: slackclient_platform_error, ошибка: invalid_auth

Если я пытаюсь использовать OAuth-токен моего приложения xoxp-45........................., я получаю

код: slackclient_platform_error, ошибка: not_allowed_token_type

Кто-нибудь может заметить, что я могу здесь делать неправильно?

1 Ответ

0 голосов
/ 17 февраля 2019

Отправленный вами ответ - от запроса команды слэша, а не от вызова API Oauth.Он содержит свойство с именем token, но это не токен Oauth, а так называемый токен проверки .Токен проверки используется для проверки подлинности любого запроса, поступающего от Slack (в отличие от токенов Oauth, которые используются для проверки подлинности запросов от вашего приложения к API).

См. здесь для более подробного объяснения токена подтверждения.

Чтобы аутентифицировать свое приложение и получить токен Oauth, вам необходимо следовать описанному процессу Oauth здесь .

Такжев общем, я бы не советовал использовать конечные точки API, которые работают только с токенами рабочей области, такими как apps.permissions.request.Приложения и токены рабочей области никогда не проходили бета-фазу и теперь официально являются устаревшими.Это может немного смущать, поскольку они все еще перечислены в официальном списке всех методов API.Но у всех них есть оговорка «Предварительный просмотр для разработчиков завершен».

...