我想实现 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);