@DD-var

Как пройти авторизацию на сайте?

надо авторизироваться на yobit. помогите разобраться что пишу не так. Выдержка от туда
Каждый запрос Trade API должен пройти аутентификацию.
Аутентификация происходит способом отправки следующих HTTP-заголовков:

Key - API-ключ, пример: FAF816D16FFDFBD1D46EEF5D5B10D8A2

Sign - цифровая подпись, POST-параметры (?param0=val0 & ...& nonce=1) подписанные секретным ключом с помощью HMAC-SHA512

Параметр nonce (минимум 1, максимум 2147483646) при каждом новом запросе должен быть больше значения из предыдущего запроса.
Для обнуления nonce необходимо создать новый ключ


пишу такой код:

public int nonce { get; set; }
        string answer { get; set; }
        public string youbit()
        {
            string api = "https://yobit.net/tapi/";
            string key = "";
            string secret= "";
            nonce = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
            string prarametrs = $"method=getInfo&nonce=" +
                                    +nonce;

            var keybol = Encoding.UTF8.GetBytes(secret);
            var param = Encoding.UTF8.GetBytes(prarametrs);
            using(HMACSHA512 hma=new HMACSHA512(keybol))
            {
                var inpo = hma.ComputeHash(param);

                var hex1 = new StringBuilder(inpo.Length * 2);
                foreach (var b in inpo) hex1.AppendFormat("{0:x2}", b);
               string sign1 = hex1.ToString();


                using (var ht=new HttpRequest())
                {
                    ht.AddHeader("Key", key);
                    ht.AddHeader("Sign", inpo.ToString());
                    ht.AddHeader(HttpHeader.ContentType, "application/x-www-form-urlencoded");

                    ht.ConnectTimeout=20000;
                     answer = ht.Post(api).ToString() ;
                }
               
            }

            
            return answer;
        }

в запросе выходит что отправляю только https://yobit.com/tapi/ . как добавить header в запрос??
  • Вопрос задан
  • 249 просмотров
Решения вопроса 1
@DD-var Автор вопроса
разобрался, надо добавлять параметры в запрос такие же как и в header.
пример:
  public string youbit()
        {
            
            string api = "https://yobit.net/tapi/";
            string key = "ВАШ АПИ КЛЮЧ";
            string secret= "Секретный ключ";
            nonce = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;// время, можете прибавлять +1 сами, кому как удобно. Главное что б новое число было больше другого.
            string prarametrs = "method=getInfo&nonce=" + nonce.ToString();// параметры которые будут шифроваться в HMA512



            var keybol = Encoding.UTF8.GetBytes(secret);//переводим в байты
            var param = Encoding.UTF8.GetBytes(prarametrs);
            using(HMACSHA512 hma=new HMACSHA512(keybol))//keybol-подпись
            {
                var inpo = hma.ComputeHash(param);

                var hex1 = new StringBuilder(inpo.Length * 2);
                foreach (var b in inpo) hex1.AppendFormat("{0:x2}", b);
               string sign1 = hex1.ToString();// конвертация в string все то что зашифровалось.

                using (var ht=new HttpRequest())
                {
                   
                    ht.AddHeader(HttpHeader.ContentType, "application/x-www-form-urlencoded");
                    ht.AddHeader("Key", key);//головы вашего запроса + ключ
                    ht.AddHeader("Sign", sign1);// зашифрованные данные
                   
                    var bestie = new RequestParams();// параметры запроса
                    bestie["method"] = "getInfo";
                    bestie["nonce"] = nonce.ToString();
                    
                    answer = ht.Post(api,bestie).ToString(); // метод POST

                }

            }

            
            return answer;//возращает ответ
        }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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