Проблема с формированием st.signature для API Одноклассники

luserz

Client
Регистрация
07.09.2016
Сообщения
114
Благодарностей
5
Баллы
18
Здравствуйте! Задача: постинг в ленту группы Одноклассников. Проблема возникла с формированием st.signature.

Запрос на публикацию в ленту группы выглядит следующим образом:

----------------
ht tps://conn ect.ok.ru/dk
   ?st.cmd=WidgetMediatopicPost
   &st.app={application_id}
   &st.groupId={group_id}
   &st.attachment={attachment_json}
   &st.signature={signature}
   &st.return={return_url}
   &st.popup={popup}
   &st.silent={silent}
   &st.utext={text}
   &st.nohead={nohead}
--------------

Сформировал запрос:

ht tps://conn ect.ok.ru/dk?st.cmd=WidgetMediatopicPost&st.app=#Идентификатор приложения#&st.groupId=#Идентификатор группы#&st.attachment={"media":[{"type":"text","text":"привет"}],"publishAt":"2022-08-27 12:05:00","onBehalfOfGroup":"true","disableComments":"false"}&st.signature=????

С закодированным атачмент:

ht tps://conn ect.ok.ru/dk?st.cmd=WidgetMediatopicPost&st.app=#Идентификатор приложения#&st.groupId=#Идентификатор группы#&st.attachment=%7b%22media%22%3a%5b%7b%22type%22%3a%22text%22%2c%22text%22%3a%22%d0%bf%d1%80%d0%b8%d0%b2%d0%b5%d1%82%22%7d%5d%2c%22publishAt%22%3a%222022-08-27+12%3a05%3a00%22%2c%22onBehalfOfGroup%22%3a%22true%22%2c%22disableComments%22%3a%22false%22%7d&st.signature=????


Далее в справке API https://apiok.ru/ext/publish написано:

Расчет подписи запроса st.signature
-------------------------------

В качестве секретного ключа при передаче параметра st.access_token используется session_secret_key сессии, иначе, используется секретный ключ приложения.
Все значения не должны быть закодированы (кроме случая, когда вы используете base64 для st.attachment).

Если указан параметр st.return, вычисляется следующим образом:

md5("st.attachment=" + attachment + "st.return=" + return_url + secretKey);
В остальных случаях:

md5("st.attachment=" + attachment + secretKey);
-------------------------------


Нашел как получить ХЕШ переменной.

//Получаем значение строки из переменной
string input = project.Variables["str"].Value;

// Создаем объект этого класса.
System.Security.Cryptography.MD5 md5Hasher = System.Security.Cryptography.MD5.Create();
// Преобразуем входную строку в массив байт и вычисляем хэш
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
// Создаем новый Stringbuilder (Изменяемую строку) для набора байт
StringBuilder md5hash = new StringBuilder();
// Преобразуем каждый байт хэша в шестнадцатеричную строку
for (int i = 0; i < data.Length; i++)
{
//преобразуем элемент в шестнадцатиричную строку длиной в два символа
md5hash.Append(data.ToString("x2"));
}
//Возвращаем MD5 хеш для строки
return md5hash.ToString();


Не понимаю, каким образом получить st.signature. Как записать данную конструкцию ("st.attachment=" + attachment + secretKey) в переменную str чтобы получит хеш?
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)