如何正确调用post方法来抽动api?

时间:2017-04-22 22:13:53

标签: c# json xamarin twitch

我正在进行预测连接到twitch登录。当我查看他们关于如何设置它们的文档时,这就是它所说的:

POST https://api.twitch.tv/kraken/oauth2/token

POST Body (URL-encoded)
client_id=<your client ID>
&client_secret=<your client secret>
&grant_type=authorization_code
&redirect_uri=<your registered redirect URI>
&code=<authorization code received above>
&state=<your unique token generated by your application>

https://dev.twitch.tv/docs/v5/guides/authentication/#implicit-grant-flow (我遵循&#34;授权代码流程&#34;指南)。

然而,我目前有一些问题使它工作。这就是我的代码:

    static public async Task getTwitchData()
    {
        var httpClientRequest = new HttpClient();

        var postData = new Dictionary<string, object>();
        postData.Add("client_id", clientId);
        postData.Add("client_secret", secretId);
        postData.Add("grant_type", accesstoken);
        postData.Add("redirect_uri", redirectURL);
        postData.Add("code", accesstoken);
        postData.Add("state", mycreatedtoken);

        var jsonRequest = JsonConvert.SerializeObject(postData);
        HttpContent content = new StringContent(jsonRequest, System.Text.Encoding.UTF8, "application/json");

        var result = await httpClientRequest.PostAsync("https://api.twitch.tv/kraken/oauth2/token", content);
        try
        {
            var resultString = await result.Content.ReadAsStringAsync();
            var jsonResult = JObject.Parse(resultString);
            System.Diagnostics.Debug.WriteLine(jsonResult);
            return jsonResult;
        }

        catch
        {
            System.Diagnostics.Debug.WriteLine(result);
            return null;
        }
    }

如果我运行此功能,它无法到达&#34;尝试&#34;因为找不到json。相反,它到达&#34; catch&#34;打印出来的地方:

StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, Content:  System.Net.Http.StreamContent, Headers:

我应该得到的(如果做得正确)是json中的响应,如下所示:

{
"access_token": "<user access token>",
"scope": <your previously listed scope(s)>
} 

1 个答案:

答案 0 :(得分:0)

  

如果您的应用使用服务器(例如客户端JavaScript应用或移动应用),请使用隐式授权流。此方法不需要必须向API发出请求的服务器。

如果您是通过移动应用发出这些请求,则应使用Implicit Grant Flow而不是Authorization Code Flow

授权代码流程用于从服务器访问Twitch,而不是移动应用程序。

回复:https://dev.twitch.tv/docs/v5/guides/authentication/