我正在尝试发布到使用OAuth 1.0
进行身份验证的Rest API。API 提供商为我提供了令牌和机密以及使用者密钥,使用它们我可以成功创建与PostMan
一起使用的 OAuth 标头
但问题是当我尝试使用相同的标题和正文时HttpClient
它会向我抛出403 Forbidden
。
我已确保标题或正文或 URL 中没有差异
似乎邮递员所做的一些额外/更少的东西无法在C#
中重新创建
private static async Task<string> SendRequest(string fullUrl, string oAuthHeader)
{
var json = GetJsonPayload();
var sc = new StringContent(json, Encoding.UTF8, "application/json");
sc.Headers.Add("ContentType", "application/json");
using (var http = new HttpClient())
{
http.DefaultRequestHeaders.Add("Authorization", oAuthHeader);
var httpResp = await http.PostAsync(fullUrl, sc);
httpResp.EnsureSuccessStatusCode();
var respBody = await httpResp.Content.ReadAsStringAsync();
return respBody;
}
}
在这里,我的 OAuth 字符串如下所示——
OAuth realm="REALM", oauth_consumer_key="CONSUMERKEY", oauth_nonce="NFcdqA", oauth_signature_method="HMAC-SHA1", oauth_signature="GENERATEDSIGNATURE", oauth_timestamp="1555457636", oauth_token="TOKEN", oauth_version="1.0"
我观察到在 Postman 中,如果在授权选项卡中我将类型选择为无身份验证,并使用给定的 OAuth 字符串将手动标头设置为授权 Postman 也会抛出403
,但选择授权类型以OAuth 1.0
工作,我似乎找不到为什么会这样以及如何在 C# 中设置 Type
任何帮助/指示将不胜感激。
在 Postman 中,在"发送"按钮下,单击"代码"按钮 - 这有每种语言的代码生成器 - 选择 C# 并尝试,如果没有生成 curl 并验证您拥有每个部分。