构建API调用'授权'标题MVC5

时间:2017-12-04 15:32:52

标签: c# asp.net-mvc asp.net-mvc-5 restful-authentication intuit-partner-platform

在我提出这个问题之前,我想指出我已经通过www.developer.intuit.com上的API文档,并且我也在Stack Overflow上进行了搜索。我之所以提到这一点,是因为我想避免任何回复,包括“为什么不阅读文档或进行搜索”。据我所知,文档中并没有解决这个问题。

我试图使用HttpClient对象调用API,我唯一缺少的是有关如何构建Authorization标头的详细信息。

这是构建和处理API调用的代码块:

string jsonString = JsonConvert.SerializeObject(customer, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore });
var httpContent = new StringContent(jsonString, Encoding.UTF8, "application/json");
var httpResponse = new HttpResponseMessage();
    using (var client = new HttpClient()) {
        client.DefaultRequestHeaders.Add("Accept", "application/json;charset=UTF-8");
        client.DefaultRequestHeaders.Add("ContentType", "application/json;charset=UTF-8");
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", AppController.access_token);
        httpResponse = await client.PostAsync(uri, httpContent);
    }

我已经做了Coder1409建议的更改,并反映了上面代码块的变化。我仍然收到错误,但错误号已更改。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<IntuitResponse xmlns="http://schema.intuit.com/finance/v3" time="2017-12-04T07:57:11.131-08:00">
    <Fault type="AuthenticationFault">
        <Error code="100">
        <Message>General Authentication Error</Message>
        <Detail>AuthenticationErrorGeneral: Internal Server Error , statusCode: 500</Detail>
        </Error>
    </Fault>
</IntuitResponse>

1 个答案:

答案 0 :(得分:0)

认为你应该改变这一行

 client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("OAuth2", AppController.access_token);

到这个

 client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", AppController.access_token);