调用 API 函数“用户/get_current_account”时出错:必须提供 HTTP 标头“授权”或 URL 参

本文关键字:HTTP 标头 URL 授权 用户 函数 API get current 出错 调用 | 更新日期: 2023-09-27 18:33:44

我在Dropbox API上开发,使用C#通用应用程序。

public async Task<string> Httpclient(string link) {
    HttpClient client = new HttpClient();
    HttpResponseMessage response= await client.GetAsync(link);
    return await response.Content.ReadAsStringAsync();
}
public async Task<Model.Get_Current_Account.RootObject> get_current_account(string _accessToken) {
    var query = await mainViewModel.Httpclient("https://api.dropboxapi.com/2/users/get_current_account?access_token="+_accessToken);
    if (query != null) {
        var get_data = JsonConvert.DeserializeObject<Model.Get_Current_Account.RootObject>(query);
        return get_data;
    } else
        return null;
}

var query产生错误:

调用 API 函数"用户/get_current_account"时出错:必须提供 HTTP 标头"授权"或 URL 参数"授权"

调用 API 函数“用户/get_current_account”时出错:必须提供 HTTP 标头“授权”或 URL 参

阅读 Dropbox API 文档建议您应该传递授权标头(与您收到的错误相匹配)

Authorization: Bearer <access token>

这个答案显示了如何将标头添加到 HttpClient

不要使用

HttpClient ,请尝试使用HttpWebRequest并设置 API 要查找的 HTTP 标头:

public async Task<string> Httpclient(string link, string token)
{
    try
    {
        var request = (HttpWebRequest)WebRequest.Create(link);
        request.Accept = "application/json";
        request.Headers.Add(
            HttpRequestHeader.Authorization, 
            string.concat("Bearer ", token));
        request.Method = "get";
        var response = await request.GetResponseAsync();
        var stream = response.GetResponseStream();
        if (stream != null)
        {
            using (var reader = new StreamReader(stream))
            {
                return reader.ReadToEnd();
            }
        }
        else return string.Empty;
    }
    catch { return string.Empty; }
}

这应该会让你朝着正确的方向前进。

您需要提供token数据才能成功授权。