Проблемы с обменом кодом OAuth API инструментов для веб-мастеров Bing, изменения?
Это часть настольного приложения.
На основе https://docs.microsoft.com/en-us/bingwebmaster/oauth2
Следующий код для обмена кодом авторизации на токены доступа и обновления работал несколько месяцев назад...
try
{
HttpWebRequest req = WebRequest.CreateHttp("https://www.bing.com/webmasters/oauth/token");
req.Method = WebRequestMethods.Http.Post;
req.ContentType = "application/x-www-form-urlencoded";
StringBuilder content = new StringBuilder();
content.AppendFormat("code={0}&", Uri.EscapeDataString(code));
content.AppendFormat("client_id={0}&", Uri.EscapeDataString(clientId));
content.AppendFormat("client_secret={0}&", Uri.EscapeDataString(clientSecret));
content.AppendFormat("redirect_uri={0}&", Uri.EscapeDataString(redirectUri));
content.AppendFormat("grant_type={0}", Uri.EscapeDataString("authorization_code"));
var data = Encoding.ASCII.GetBytes(content.ToString());
using (var stream = await req.GetRequestStreamAsync())
{
await stream.WriteAsync(data, 0, data.Length);
}
string json;
using (var res = await req.GetResponseAsync())
{
using (var stream = res.GetResponseStream())
using (var sr = new StreamReader(stream))
{
json = await sr.ReadToEndAsync();
}
}
if (!string.IsNullOrWhiteSpace(json))
{
tokenResponse = JsonConvert.DeserializeObject<TokenResponse>(json);
}
}
catch (WebException wex)
{
using (var stream = wex.Response.GetResponseStream())
using (var sr = new StreamReader(stream))
{
var t = await sr.ReadToEndAsync();
}
}
catch (Exception ex)
{
}
Однако,
400 Bad Request, заголовки запроса Origin и Referer отсутствуют/пусты
я пытался добавить
400 Неверный запрос, не удалось извлечь ожидаемый токен защиты от подделки
Я пытался передать случайный
Я не эксперт по OAuth, но я сделал несколько интеграций и раньше такого не видел.
Пользователь предоставляет авторизацию через окно с элементом управления WebView2, который возвращает код. Эта часть все еще работает хорошо. Я быстро покопался в ответе, чтобы посмотреть, не возвращается ли с сервера что-либо, связанное с защитой от подделки/CSRF, но я ничего не заметил. И в любом случае документация не изменилась в отношении того, что необходимо для запроса токенов, поэтому на данный момент все в основном методом проб и ошибок.
Итак, мой вопрос: если вы видели эту проблему реферера / защиты от подделки в любой реализации OAuth, как вы ее исправили или обошли? Или, если вы используете API-интерфейс инструментов Bing для веб-мастеров (настраиваемый или иной), работает ли он по-прежнему?
Кроме того, я открыт для идей и ценю ваше время.