0

我想实现 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://localhost&response_type=code&scope=user:read:subscriptions&force_verify=false&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_credentials&scope=user:read:subscriptions%20channel:read:subscriptions&client_id=" + id + "&client_secret=" + secret, ParameterType.RequestBody);
4

0 回答 0