@IgorusKr

Одноклассники Bot API не получается подписаться на Long-Polling?

Пытаюсь выполнить Long-Polling подписку в Одноклассниках. Группу создал, токен получил. В принципе всё делаю, как написано Здесь, но в ответ получаю такое сообщение:
{
"error_code":2001,
"error_msg":"GRAPH_PARAM_REQUEST : Wrong JSON format.",
"error_data":null
}

В документации у них сказано:
Внимание! POST-запросы должны выполняться с заголовком Content-Type: application/json;charset=utf-8

я передаю, правда у меня на дебаге заголовки выглядят как Content-Type: application/json; charset=utf-8 то есть с пробелом, но это, думаю, не должно влиять.

Код отправки запроса:
string baseUrl = "https://api.ok.ru/graph";
string url = baseUrl + "/me/subscribe?access_token=" + token;
using HttpClient httpClient = new();
                
var args = new
{
    filter = "",
    types = new[] { "MESSAGE_CREATED", "MESSAGE_CALLBACK", "CHAT_SYSTEM" },
    longPolling = true,
    time = DateTimeOffset.Now.ToUnixTimeSeconds(),
    url = Array.Empty<string>(),
};
string argsJson = JsonConvert.SerializeObject(args);

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url);
request.Content = new StringContent(argsJson, Encoding.UTF8, "application/json");

var response = await httpClient.SendAsync(request)
    .ContinueWith(responseTask => responseTask.Result.EnsureSuccessStatusCode());

string contentJson = await response.Content.ReadAsStringAsync();

С аргументами игрался по-всякому, это ничего не меняет. Заголовки тоже по-разному пытался добавлять, уже не знаю, в чём дело.

Может, что не так делаю или упускаю чего?

P.S.: Или может, кто знает готовую библиотеку на C#?
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
@IgorusKr Автор вопроса
Решено.

Kano подсказал в комментарии, что нужно оставить только те параметры, которые относятся к longpoll м указаны в документации (притом формат параметра types должен быть таким, как у меня в примере, а не как в документации).

Таким образом передаваемые параметры должны выглядеть так:
var args = new
{
    types = new[] { "MESSAGE_CREATED", "MESSAGE_CALLBACK", "CHAT_SYSTEM" },
    longPolling = true,
};
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы