Отправка моего первого сообщения на слабый API - PullRequest
4 голосов
/ 07 ноября 2019

Я зарегистрировал свое первое приложение, и оно выглядит так: enter image description here

Все поля заполнены ниже снимка экрана.

Теперь яу меня есть некоторый базовый код Python, использующий примеры, найденные на их репозитории .

Я создаю следующий тестовый скрипт:

import traceback
app_id = 'FAKE.VALUE'
client_id = 'FAKE.VALUE'
client_secret = 'FAKE.VALUE'
signin_secret = 'FAKE.VALUE'
verification_token = 'FAKE.VALUE'

items = locals()

import os
import slack

items = locals().copy()

for k in items:

    if '__' not in k:
        val = items[k]

        try:
            client = slack.WebClient(token=val)

            response = client.chat_postMessage(
                channel='CE476K9HT',
                text='Hello-----' + str(val))

            print(response)
        except:
            print(k)
            traceback.print_exc()
            print('-'*50)

Но все ответы, которые я получаю, говорят:

The server responses with: {'ok':False,'error':'invalid_auth'}

По какой-то причине необходимо использовать переменные пути?

Мне неясно, какой тип аутентификации требуется здесь.


После выполнения того, что предложил Эрик,

enter image description here

У меня есть код xoxp, я зарегистрировал URL перенаправления на http://localhost.

и добавил следующие области: enter image description here

иобновил мой код, чтобы он выглядел так:

oauth_token ='xoxp-*****************'

import os
import slack

items = locals().copy()

client = slack.WebClient(token=oauth_token)

response = client.chat_postMessage(
    channel='my_channel_id',
    text='Hello-----')

Я получил свой идентификатор канала из URL:

https://app.slack.com/client/FOO/my_channel_id

Когда я запускаю свой код, я получаю следующее:

Traceback (most recent call last):
  File "/home/usr/git/slack_messaging/slack_messaging.py", line 20, in <module>
    text='Hello-----')
  File "/home/usr/git/python-slackclient/slack/web/client.py", line 382, in chat_postMessage
    return self.api_call("chat.postMessage", json=kwargs)
  File "/home/usr/git/python-slackclient/slack/web/base_client.py", line 172, in api_call
    return self._event_loop.run_until_complete(future)
  File "/home/usr/anaconda2/envs/beer/lib/python3.7/asyncio/base_events.py", line 573, in run_until_complete
    return future.result()
  File "/home/usr/git/python-slackclient/slack/web/base_client.py", line 241, in _send
    return SlackResponse(**{**data, **res}).validate()
  File "/home/usr/git/python-slackclient/slack/web/slack_response.py", line 176, in validate
    raise e.SlackApiError(message=msg, response=self)
slack.errors.SlackApiError: The request to the Slack API failed.
The server responded with: {'ok': False, 'error': 'missing_scope', 'needed': 'chat:write:user', 'provided': 'admin,identify'}

Процесс завершен с кодом выхода 1

1 Ответ

2 голосов
/ 07 ноября 2019

Вам нужно две вещи, чтобы ваш скрипт работал.

1. Токен OAuth

Вам нужен действительный токен OAuth и укажите его при инициализации Slack Client:

client = slack.WebClient(token="xoxb-xxx")

Чтобы получить токен, необходимо установить приложение Slack в рабочую область. Вы можете сделать это на странице управления приложением в разделе «Установить приложение». Ваш токен OAuth также будет отображаться на этой странице после его установки.

2. Разрешения

Ваше приложение Oauth Token / Slack должно иметь разрешение на публикацию сообщений. На страницах управления приложением перейдите в раздел «OAuth & разрешение» и добавьте необходимые разрешения в свое приложение :. например, chat: напишите: user для пользовательских токенов.

Обратите внимание, что вам необходимо каждый раз переустанавливать приложение, чтобы добавить разрешение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...