Я пытаюсь опубликовать в API отдыха, который использует OAuth 1.0
для аутентификации. Поставщики API предоставили мне токен и секретный ключ, используя ключ, с помощью которого я могу успешно создать заголовок OAuth, который работает с PostMan
Но проблема в том, что когда я пытаюсь использовать те же заголовки и тело, используя HttpClient
, это бросает 403 Forbidden
в меня.
Я убедился, что нет никаких расхождений в заголовках, теле или URL
Кажется, есть что-то экстра / меньше, что делает PostMan, который не может воссоздать в 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, если на вкладке Authorization я выбираю Type as No Auth и устанавливаю ручной заголовок на Authorization с данной строкой OAuth, Postman также выбрасывает 403
, но выбор типа авторизации на OAuth 1.0
работает, я не могу кажется, найти, почему это так и как установить Type в C #
Любая помощь / указатели будут высоко оценены.