Asana:401:未被授权处理put请求,但未被授权执行get请求



我正在开发一个UWP应用程序,以便快速概述和管理我在体式上的任务。然而,我无法在一切正常的情况下更新任何任务。

设置如下:在导航到oauth重定向url的情况下,我通过拦截导航事件,通过WebView元素(托管的web浏览器)获得oauth令牌。

我对其余服务执行的api调用如下:

    private static async Task<JObject> CallApiGet(string api)
    {
        HttpClient client = new HttpClient();
        client.DefaultRequestHeaders.Add("Authorization", TokenType + " " + AccessToken);
        HttpResponseMessage result = await client.GetAsync(baseAPIUrl + api);
        result.EnsureSuccessStatusCode();
        string asText = await result.Content.ReadAsStringAsync();
        return JObject.Parse(asText);
    }
    private static async Task<JObject> CallApiPut(string api, params string[] properties)
    {
        HttpClient client = new HttpClient();
        client.DefaultRequestHeaders.Add("Authorization", TokenType + " " + AccessToken);

        var keys = properties.Where((item, index) => index % 2 == 0);
        var values = properties.Where((item, index) => index % 2 != 0);
        string urlEncoded = string.Join("&", keys.Zip(values, (key, value) => Uri.EscapeDataString(key) + "=" + Uri.EscapeDataString(value)));
        HttpContent content = new StringContent(urlEncoded, null, "application/x-www-form-urlencoded");
        HttpResponseMessage result = await client.PutAsync(baseAPIUrl + api, content);
        result.EnsureSuccessStatusCode();
        string asText = await result.Content.ReadAsStringAsync();
        return JObject.Parse(asText);
    }

奇怪的是,Get调用工作,而PUT调用失败。就是一个例子

CallApiPut("/tasks/<task id>", "notes","updated notes value");

知道为什么我的看跌电话会返回401:未经授权,而我的接电话工作正常吗?注意,我可以在asana的web gui中编辑指定的任务。

非常感谢你的帮助。

我使用了Authorization: bearer而不是Authorization: Bearer。注意大写,这就行了!然而,奇怪的是,小写bearer在oauth期间返回(响应中的token_type),并且与GETing一起工作,但与PUTing不一起工作。

不管怎样,谢谢阿格诺斯特。

最新更新