POST-запрос Python дает неизвестный результат - PullRequest
0 голосов
/ 30 сентября 2019

Так что я действительно не в духе RESTful. Я пытаюсь сделать что-то, что подписывается на действие / webhook (?) На twitch.tv, чтобы, если кто-то выходит в эфир, он знал.

Я хочу использовать этот веб-крючок здесь:

https://dev.twitch.tv/docs/api/webhooks-reference/#topic-stream-changed

Я создал сервер Flask в server.py:


app = Flask(__name__)

@app.route('/', methods=['POST'])
def result():
    print(request.data)
    return 'Received'

иPOST, который я делаю, находится здесь в notify.py:

import requests
r = requests.post("https://api.twitch.tv/helix/webhooks/hub", headers={'Client-ID': client_id}, data={"hub.callback": "http://127.0.0.1:5000/","hub.mode":"subscribe",'hub.topic':"https://api.twitch.tv/helix/streams?user_id=XXXXXX"})

Запуск моего кода ничего не показывает на сервере, даже Received, поэтому я предполагаю, что я делаю что-то не так.

если я сделаю GET, на request = requests.get('https://api.twitch.tv/helix/streams?user_id=xxxxxx', headers={'Client-ID': client_id})

результат будет b ' '

, и я понятия не имею, что это значит

в notifiy.py, помещая print(r) возвращает <Response [202]>, но я думаю, что хочу [200]

Я предполагаю, что Twitch должен быть доступен для моего сервера, чтобы увидеть его, но я не уверен.

Любая помощьоценили!

1 Ответ

2 голосов
/ 30 сентября 2019

Окончательное РЕДАКТИРОВАНИЕ ... Я создал подтверждение концепции


Вы ОТПРАВЛЯЕТЕ "hub.callback": "http://127.0.0.1:5000/". Этот URL-адрес доступен только на вашем компьютере.

Предполагается, что этот URL-адрес доступен из инфраструктуры Twitch. Если вы не можете зарегистрировать домен, вы можете использовать что-то вроде ngrok , чтобы получить действительный URI, который направляется обратно на ваш сервер разработки Flask для тестирования.

После отправки сообщения POSTзапрос, вы можете получить подписку на webhook , чтобы подтвердить работоспособность почтового запроса. Это также возможно при использовании curl, с командами, включенными справа от этой документации.

Если вы видите действительные подписки там, то конечная точка, которую вы предоставляете как hub.callback, должна получить попадание от Twitch ...

при изменении потока;например, поток переходит в онлайн или офлайн, название заголовка потока или игра меняется.

В рамках маршрута вы должны выполнить некоторую логику для обработки результата этого запроса.


Обновление комментариев

Вы можете попробовать обновить hub.lease_seconds: (здесь)

Количествосекунд до истечения срока подписки. По умолчанию: 0. Максимум: 864000.

Значение по умолчанию (0) позволяет тестировать рабочий процесс создания подписки без создания каких-либо подписок (так как срок их действия истекает немедленно). После тестирования для фактического создания подписок необходимо указать большее значение.

Это относится к словарю, передаваемому в качестве аргумента data для requests.post в notify.py:

...