尝试从Reddit API获取数据时出现403错误

时间:2016-08-28 17:09:59

标签: c# reddit

我正在使用oAuth来验证我的应用。我设法获得了一个代码,access_token和refresh_token。因此,下一步将尝试获取有关当前用户的信息。

    public async void GetCurrentUser()
    {
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", AccessToken);
            var response = await client.GetAsync("https://oauth.reddit.com/api/v1/me");
            if (response.IsSuccessStatusCode)
            {
                var json = await response.Content.ReadAsStringAsync();
                var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(json);
            }
        }
    }

这是我用来做的方法。但是,响应始终是403(禁止)错误代码。知道什么可能是错的吗? access_token是我向https://oauth.reddit.com/api/v1/access_token

发出请求时得到的

我认为令牌是正确的,因为当我用Fiddler创建相同的请求时,它可以工作。

1 个答案:

答案 0 :(得分:0)

解答:

通过添加自定义用户代理

来解决此问题
            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, _endpointUri + "me");
            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", AccessToken);
            request.Headers.Add("User-Agent", Uri.EscapeDataString("android:com.arnvanhoutte.redder:v1.2.3 (by /u/nerdiator)"));

            var response = await client.SendAsync(request);