Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Не выполняется запрос к twitch

Глеб Гарусин Ученик (54), на голосовании 1 неделю назад
Выполняю запрос к twitch api, но не получается. Постоянна кидает в response.EnsureSuccessStatusCode(); и дальше не идёт. client id, client secret, и AOuth2 токен тоже верен в чём проблема?
 using (HttpClient client = new HttpClient(handler)) 
{
client.DefaultRequestHeaders.Add("Client-ID", "s92hr2ftp68dka0a6mk6gh1dwrr90h");
client.DefaultRequestHeaders.Add("Client-Secret", "7ph1qtlyzpuqutlc681b15cvd8hfps");
client.DefaultRequestHeaders.Add("Authorization", "Bearer ");

client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.58");
client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("Accept", "application/x-mpegURL, application/vnd.apple.mpegurl, application/json, text/plain");
client.DefaultRequestHeaders.Add("Accept-Language", "en-US,en;q=0.5");

client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate, br");
string getApiTwitch = "{\"operationName\":\"PlaybackAccessToken_Template\",\"query\":\"query PlaybackAccessToken_Template($login: String!, $isLive: Boolean!, $vodID: ID!, $isVod: Boolean!, $playerType: String!) { streamPlaybackAccessToken(channelName: $login, params: {platform: \\\"web\\\", playerBackend: \\\"mediaplayer\\\", playerType: $playerType}) @include(if: $isLive) { value signature __typename } videoPlaybackAccessToken(id: $vodID, params: {platform: \\\"web\\\", playerBackend: \\\"mediaplayer\\\", playerType: $playerType}) @include(if: $isVod) { value signature __typename }}\",\"variables\":{\"isLive\":true,\"login\":\"" + TwitchBot.channelTwitch + "\",\"isVod\":false,\"vodID\":\"\",\"playerType\":\"site\"}}";
HttpContent content = new StringContent(getApiTwitch, System.Text.Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsync("https://gql.twitch.tv/gql", content);

response.EnsureSuccessStatusCode();

string apiString = await response.Content.ReadAsStringAsync();
token = apiString.Between("value\":\"", "\",\"signature")
.Replace("\\", "")
.Replace("u0026", "\\u0026")
.Replace("+", "%2B")
.Replace(":", "%3A")
.Replace(",", "%2C")
.Replace("[", "%5B")
.Replace("]", "%5D")
.Replace("'", "%27");
sig = apiString.Between("signature\":\"", "\",");
client.Dispose();
getApiTwitch = (string)null;
apiString = (string)null;
}
Голосование за лучший ответ
Malenkiuprinter Kpachemokoc Знаток (376) 1 месяц назад
Ваш запрос к API Twitch может быть заблокирован или отклонен по нескольким причинам:

Неудачная аутентификация: Проверьте, правильно ли вы используете заголовки Client-ID, Client-Secret и Authorization. При использовании OAuth2-токена убедитесь, что вы используете правильный токен и он имеет необходимые разрешения для доступа к запрашиваемым данным.

Блокировка запросов: Twitch может блокировать запросы с вашего IP-адреса из-за слишком частых запросов или других нарушений. Попробуйте уменьшить частоту запросов или использовать прокси-сервер для смены IP-адреса.

Проблемы с телом запроса: Убедитесь, что ваше тело запроса JSON корректно сформировано и соответствует ожидаемому формату API Twitch.

Ответ от API Twitch: Если API Twitch не может обработать ваш запрос, он может вернуть ошибку. Ваш код должен обрабатывать возможные ошибки в ответе API.

Блокировка со стороны вашего брандмауэра или антивирусного программного обеспечения: Некоторые брандмауэры или антивирусное программное обеспечение могут блокировать запросы к определенным доменам или IP-адресам. Убедитесь, что ваше программное обеспечение безопасности не блокирует запросы к API Twitch.
Похожие вопросы