Loading
Are you having trouble using the Twitch app? Several users have reported the error ‘400’ that prevents them from using Twitch.
Tech Support 24/7
Ask a Tech Specialist Online
Connect with the Expert via email, text or phone. Include photos, documents, and more. Get step-by-step instructions from verified Tech Support Specialists.
On this page, you will find more information about the most common causes and most relevant solutions for the Twitch error ‘400’. Do you need help straight away? Visit our support page.
Error information
How to solve Twitch error 400
We’ve created a list of solutions which you can follow if you want to solve this Twitch problem yourself. Do you need more help? Visit our support page if you need professional support with Twitch right away.
Tech Support 24/7
Ask a Tech Specialist Online
Connect with the Expert via email, text or phone. Include photos, documents, and more. Get step-by-step instructions from verified Tech Support Specialists.
Check the server status of Twitch
Before you restart everything, check the server status of Twitch first. It may well be that Twitch is struggling with a temporary outage.
Check the status of Twitch
Have you found a solution yourself, but it is not in the list? Share your solution in the comments below.
Need more help?
Do you need more help?
Tech experts are ready to answer your questions.
Ask a question
This code doesn’t look right to me:
string postData = "client_id=" + clientID +
"&client_secret=" + clientSecret +
"&grant_type=authorization_code" +
"&redirect_uri=http://localhost" +
"&code=" + code +
"&state=TWStreamingStateAuthenticated";
ASCIIEncoding encoding = new ASCIIEncoding();
postData = HttpUtility.UrlEncode(postData);
byte[] byteArray = encoding.GetBytes(postData);
// ...
You are URL-encoding the entire post-data string. This has the effect of converting the &
and =
signs in the post data to %26
and %3d
respectively. When the remote server receives this data, it will scan through it looking for the &
and =
signs in order to separate out the parameter names and values. Of course, it won’t find any, so it will assume you have one big parameter name with no value. The server is probably expecting values for each of the six parameters you are attempting to send, but seeing values for none of them, and this may be why you are getting a 400 Bad Request error.
Instead of URL-encoding the whole string, URL-encode parameter values that may contain characters other than letters and numbers. I would try the following instead:
string postData = "client_id=" + HttpUtility.UrlEncode(clientID) +
"&client_secret=" + HttpUtility.UrlEncode(clientSecret) +
"&grant_type=authorization_code" +
"&redirect_uri=" + HttpUtility.UrlEncode("http://localhost") +
"&code=" + HttpUtility.UrlEncode(code) +
"&state=TWStreamingStateAuthenticated";
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] byteArray = encoding.GetBytes(postData);
// ...
This way, the remote server will still see the &
and =
characters, and so will be able to pull out the parameter names and values. Because we’ve URL-encoded the client ID, client secret, URL and code, any characters they contain that may have meaning in a URL will not have that meaning and will be received by the remote server as intended.
Also, if you are still getting a 400 Bad Request error response, try reading the contents of the response stream, obtained by calling GetResponseStream()
on the response. Often that will contain a message that will help you figure out what’s gone wrong.
Having had a closer look at your code, it seems you have a misunderstanding about how OAuth authentication works. Your getDownload_String
method will not get the access code you want, it will only get the HTML text of a Twitch login page.
This is how OAuth authentication works:
- Your app sends the user to a login URL, to allow the user to log in to Twitch.
- In the web browser, the user then enters their login credentials and submits the page to Twitch.
- The Twitch API then responds by redirecting the user’s web browser to the redirect URL, with a code appended. Your web app then reads this code out of the URL.
If your code is in a web app it will be able to respond to the URL redirected to in step 3. Alternatively, you may be able to use a WebBrowser control (Windows Forms, WPF) to handle the Twitch login, and handle a Navigating
event. If the URL being navigated to begins with the redirect URL, grab the code out of the URL, cancel the navigation and hide the login web-browser control.
The presence of what appears to be a RichTextBox control, along with your comment about your code being a ‘small C# application’, makes me think that your code is a Windows Forms or WPF application. If this is the case, then you will need to either:
- use a WebBrowser control as I described above,
- replace your WinForms/WPF app with a web app, or
- get in contact with Twitch to request the use of the password flow (which appears not to require a redirect), and use that instead.
О чем этот сайт? «Twitch» — игровой видеостриминг
Дата добавления сайта в базу: 04 Ноября 2019 г. (3 года назад)
Проверить работу сайта
Дата последней проверки на работоспособность: Четверг 21 Июля 2022 г. 23:52 г. (10 месяцев назад)
Оцените работу сайта
Сейчас работает
Сейчас не работает
Поделитесь, спросите у друзей, почему не работает сайт?:
Оцените сам сайт, насколько он вам нравится:
Проголосовавших: 1 чел.
Средний рейтинг: 5 из 5.
Что делать, если не открывается сайт twitch.tv? Если с недавнего времени перестал работать ресурс, попробуйте найти причину в нижеприведенных возможных ошибках, которые могут находиться как на стороне сервера, так и на стороне пользователя.
4xx (ошибка клиента)
Коды ответа 4xx при открытии сайта twitch.tv в интернет-браузере означают, что произошла ошибка на стороне пользователя:
Ошибка 400
Не работает сайт twitch.tv, ошибка в браузере 400 — плохой запрос, в запросе присутствует синтаксическая ошибка (например, в протоколе передачи данных);
Ошибка 401
Недоступен сайт twitch.tv, ошибка браузера 401 — авторизация не пройдена, нужна авторизация, но она не пройдена, либо введен неверный логин/пароль. Обычно возникает в случае ввода в форму авторизации неправильных данных;
Ошибка 403
Код ошибки браузера 403 — доступ запрещен. Ошибка 403 означает, что доступ к данным запрещен даже с авторизацией, открыть страницу не получится вообще;
Ошибка 404
Ошибка сайта twitch.tv, ошибка 404 — страница с текущим адресом не найдена, запрашиваемый документ (страница) отсутствует или ее адрес изменен.
5xx (ошибка сервера)
Еще один вид ошибок при открытии сайта twitch.tv в браузере — 5xx, ошибки на стороне сервера:
Ошибка 500
При открытии сайта twitch.tv появляется код ошибки 500 — внутренняя ошибка сервера, на сервере произошла неизвестная ошибка;
Ошибка 501
Недоступность twitch.tv, серверная ошибка 501 — не реализовано, сервер не поддерживает технологии для обработки запроса;
Ошибка 503
Не хочет работать сайт twitch.tv, код ошибки сервера 503 — сервер недоступен. Сервер по техническим причинам не может обрабатать запрос;
Ошибка 522
Не работает сайт — twitch.tv, ошибка сервера 522 — сервер перегружен, например, из-за большого количества посещений или DDoS-атаки.
При открытии twitch.tv на экране белое окно
Если вместо сайта twitch.tv белое окно, пустое место, значит, в глобальной Сети или на стороне провайдера возникли ошибки маршрутизации, либо владельцы вовремя не продлили действие домена — twitch.tv и он стал неактивным.
При невозможности открытия любых сайтов наиболее вероятна причина с общей недоступностью Интернета, либо интернет-ресурс может быть заблокирован по решению суда Роскомнадзором, согласно Федеральному закону ФЗ-149. Случаи, когда невозможно войти в личный кабинет twitch.tv, выходят за рамки этой заметки.
Последние проверенные сайты
Этот код мне не подходит:
string postData = "client_id=" + clientID +
"&client_secret=" + clientSecret +
"&grant_type=authorization_code" +
"&redirect_uri=http://localhost" +
"&code=" + code +
"&state=TWStreamingStateAuthenticated";
ASCIIEncoding encoding = new ASCIIEncoding();
postData = HttpUtility.UrlEncode(postData);
byte[] byteArray = encoding.GetBytes(postData);
// ...
Вы URL-кодируете всю строку пост-данных. Это имеет эффект преобразования &
а также =
знаки в данных поста %26
а также %3d
соответственно. Когда удаленный сервер получает эти данные, он сканирует их в поисках &
а также =
знаки, чтобы отделить имена параметров и значения. Конечно, он не найдет ничего, поэтому он предполагает, что у вас есть одно большое имя параметра без значения. Сервер, вероятно, ожидает значения для каждого из шести параметров, которые вы пытаетесь отправить, но не видите значения ни для одного из них, и это может быть причиной того, что вы получаете ошибку 400 Bad Request.
Вместо URL-кодирования всей строки, URL-кодируют значения параметров, которые могут содержать символы, отличные от букв и цифр. Я бы попробовал следующее вместо этого:
string postData = "client_id=" + HttpUtility.UrlEncode(clientID) +
"&client_secret=" + HttpUtility.UrlEncode(clientSecret) +
"&grant_type=authorization_code" +
"&redirect_uri=" + HttpUtility.UrlEncode("http://localhost") +
"&code=" + HttpUtility.UrlEncode(code) +
"&state=TWStreamingStateAuthenticated";
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] byteArray = encoding.GetBytes(postData);
// ...
Таким образом, удаленный сервер все равно увидит &
а также =
символы и т. д. смогут вытащить имена и значения параметров. Поскольку мы закодировали URL-адрес клиента, его секретный ключ, URL-адрес и код, любые содержащиеся в них символы, которые могут иметь значение в URL-адресе, не будут иметь этого значения и будут получены удаленным сервером в соответствии с назначением.
Кроме того, если вы все еще получаете сообщение об ошибке 400 Bad Request, попробуйте прочитать содержимое потока ответа, полученного путем вызова GetResponseStream()
на ответ. Часто это будет содержать сообщение, которое поможет вам выяснить, что пошло не так.
Изучив ваш код, вы, похоже, неправильно поняли, как работает аутентификация OAuth. Ваш getDownload_String
Метод не получит требуемый код доступа, он получит только HTML-текст страницы входа в Twitch.
Вот как работает аутентификация OAuth:
- Ваше приложение отправляет пользователя по URL-адресу для входа, чтобы пользователь мог войти в Twitch.
- Затем в веб-браузере пользователь вводит свои учетные данные для входа и отправляет страницу в Twitch.
- Затем Twitch API перенаправляет веб-браузер пользователя на URL перенаправления с добавленным кодом. Затем ваше веб-приложение считывает этот код из URL.
Если ваш код находится в веб-приложении, он сможет отвечать на URL, перенаправленный на шаг 3. В качестве альтернативы, вы можете использовать элемент управления WebBrowser ( Windows Forms, WPF) для обработки входа в Twitch и обработки Navigating
событие. Если URL-адрес, по которому осуществляется переход, начинается с URL-адреса перенаправления, извлеките код из URL-адреса, отмените навигацию и скройте элемент управления веб-браузера для входа.
Наличие того, что кажется элементом управления RichTextBox, наряду с вашим комментарием о том, что ваш код является «небольшим приложением C#», заставляет меня думать, что ваш код является приложением Windows Forms или WPF. Если это так, то вам нужно либо:
- использовать элемент управления WebBrowser, как я описал выше,
- заменить приложение WinForms/WPF веб-приложением или
- свяжитесь с Twitch, чтобы запросить использование потока паролей (который, по-видимому, не требует перенаправления), и используйте его вместо этого.