#c# #oauth #bearer-token #twitch #twitch-api
Вопрос:
Я хочу реализовать поток кода авторизации Twitch. Если я правильно понимаю, это две части — сначала получить код, а на втором этапе получить токен из этого кода.
Итак, для первой части я начал с
using RestSharp;
String id = "<client-id>";
var client = new RestClient("https://id.twitch.tv/oauth2/authorize");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddParameter("application/x-www-form-urlencoded", "redirect_uri=http://localhostamp;response_type=codeamp;scope=user:read:subscriptionsamp;force_verify=falseamp;client_id=" id, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
dynamic resp = JObject.Parse(response.Content);
String token = resp.access_token;
На это я получаю следующий ответ.
{"status":401,"message":"invalid csrf token"}
Может быть.
Я думаю, что в той client.Execute
части, где я должен открыть окно браузера. Что я хотел бы знать, как это работает. Но мне нужен ответ, чтобы продолжить код для токена. Как я могу справиться с этим ответом? Есть ли проблема из-за локального приложения? Это консольное приложение.
Для потока учетных данных клиента он работает со следующим. Но это мне не помогает, потому что для некоторых вызовов API требуется авторизация пользователя.
// changes in compare with the upper snippet
String secret = "<client-secret>";
var client = new RestClient("https://id.twitch.tv/oauth2/token");
request.AddParameter("application/x-www-form-urlencoded", "grant_type=client_credentialsamp;scope=user:read:subscriptions channel:read:subscriptionsamp;client_id=" id "amp;client_secret=" secret, ParameterType.RequestBody);