Python slackclient oauth.access вызов, возвращающий ошибку 'invalid_code' - PullRequest
2 голосов
/ 04 октября 2019

Я использую ngrok + flask + python slackclient для ответа на OAuth Flow Slack API и получаю ошибку invalid_code.

Я выполняю шаги, описанные в slackclient docs имой код довольно прост:

import os
import slack
from flask import Flask, request
app = Flask(__name__)

SLACK_CLIENT_ID = os.environ['SLACK_CLIENT_ID']
SLACK_CLIENT_SECRET = os.environ['SLACK_CLIENT_SECRET']

@app.route('/install', methods=['GET', 'POST'])
def install():
    # Retrieve the auth code from the request params
    auth_code = request.args['code']

    # An empty string is a valid token for this request
    client = slack.WebClient(token='')

    # Request the auth tokens from Slack
    response = client.oauth_access(
        client_id=SLACK_CLIENT_ID,
        client_secret=SLACK_CLIENT_SECRET,
        code=auth_code
    )

    print(response)

if __name__ == '__main__':
    app.run()

Я запускаю установку приложения с помощью кнопки «Добавить» на странице «Управление приложениями» в моей рабочей области Slack. Я могу подтвердить, что я получаю code, как и ожидалось, после начала установки, и он правильно передается функции slack.BaseClient.api_call(), которая в конечном итоге отправляет запрос на https://slack.com/api/oauth.access.

Я ожидаю, что ответ на вызов oauth_access будет объектом JSON, содержащим мои токены доступа, однако я получаю:

slack.errors.SlackApiError: The request to the Slack API failed.
The server responded with: {'ok': False, 'error': 'invalid_code', 'warning': 'superfluous_charset', 'response_metadata': {'warnings': ['superfluous_charset']}}

Я попытался отправить сообщение POST с curl в Slack. конечная точка с требуемыми параметрами, и она работала как ожидалось. Я также попробовал с requests.post(), и это также сработало, как и ожидалось. Поэтому я подозреваю, что использую slackclient неправильно или что-то неправильно понял. Может ли кто-нибудь помочь направить меня в правильном направлении?

Ответы [ 2 ]

1 голос
/ 11 октября 2019

Эта проблема решена в v2.2.1 из slackclient

См. changelog :

[WebClient] Ранее Oauth не удалось правильно передать учетные данные,Это исправлено сейчас. # 527

1 голос
/ 07 октября 2019

Кажется, проблема с Python SDK. Я думаю, что этот запрос на исправление ошибок исправляет это

https://github.com/slackapi/python-slackclient/pull/527

. Тем временем может быть легче вернуться к версии 2.1.0

...