Вход | Регистрация



Передать логин и пароль в WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");

Передать логин и пароль в WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
Я
   SkillUp
 
04.01.19 - 10:22
Мой код:

    username ="МойЛогин";

    password ="МойПароль";
    Попытка
        WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
        WinHttp.Option(2,"utf-8");
        WinHttp.Open("POST","https://api.seller.rozetka.com.ru/sites",0);
        WinHttp.SetRequestHeader("Accept-Language", "ru");
        WinHttp.SetRequestHeader("Accept-Charset","utf-8");
        WinHttp.setRequestHeader("Content-Language", "ru");
        WinHttp.setRequestHeader("Content-Charset", "utf-8");
        WinHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
        ПараметрыПОСТ = "username="+username+"&password="+password;
        WinHttp.Send(ПараметрыПОСТ);
        ТекстОтвета = WinHttp.ResponseText();
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;

Ошибка: ТекстОтвета -1004 - неверный логин и пароль. Правильно ли я передаю эти параметры? Или как более правильно?
 
 
   SkillUp
 
1 - 04.01.19 - 10:23
Ответ - {"success":false,"errors":{"message":"incorrect_username_password","code":1004,"details":null}}
   SkillUp
 
2 - 04.01.19 - 10:25
Почитал api - "incorrect_username_password    1004-    
Неверный логин или пароль".
   SkillUp
 
3 - 04.01.19 - 10:31
Может, из-за того, что - Пароль в base64() надо?! Подскажет кто-то?
   Ник080808
 
4 - 04.01.19 - 10:40
(0) а чего не родной хттп используешь?
   SkillUp
 
5 - 04.01.19 - 10:46
(4) Использую родной, в примере ошибка. В мой обработке родной хттп ...
   Ник080808
 
6 - 04.01.19 - 11:06
(5)  я имел ввиду 1совский. А ручками логин и пароль когда вводишь, он авторизуется?
   SkillUp
 
7 - 04.01.19 - 11:15
(6) Пробую...
   SkillUp
 
8 - 04.01.19 - 11:30
(6) Активации нет таким способом, не могу понять чего?

В АПИ:


Авторизация пользователя

POST
https://api.seller.rozetka.com.ua/sites
BodyParams
Field    Type    Description
username    String    
Имя пользователя

password    String    
Пароль в base64()

Уже не знаю что делать, все перепробовал... Как получить заветный - "access_token". Что не так? не пойму...
   SkillUp
 
9 - 04.01.19 - 11:31
(6)Вот пробую -  WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");

Но и там-"incorrect_username_password"...
   SkillUp
 
10 - 04.01.19 - 11:46
(6) Пробую и так, если кто подскажет где ошибка, буду очень благодарен:

    Соединение = Новый HTTPСоединение(
        "api.seller.rozetka.com.ua/sites",// сервер (хост)

        ,// порт, по умолчанию для http используется 80, для https 443

        "МОЙЛОГИН",// пользователь для доступа к серверу (если он есть)

        Кодировать("МОЙПАРОЛЬ"),// пароль для доступа к серверу (если он есть)

        ,// здесь указывается прокси, если он есть

        ,// таймаут в секундах, 0 или пусто - не устанавливать

          // защищенное соединение, если используется https

    );
 
    // Получаем текст корневой страницы через GET-запрос.

    Запрос = Новый HTTPЗапрос("/");
 
    Результат = Соединение.Получить(Запрос);
 
    Сообщить("Нам вернули код: " + Результат.КодСостояния);
 
    Сообщить("Тело результата: " + Результат.ПолучитьТелоКакСтроку()); 
    
КонецПроцедуры

Функция Кодировать(СтрокаКодирования) 
    Кодировка = "КодировкаТекста.UTF8"; 
    ИмяОченьВременногоФайла = ПолучитьИмяВременногоФайла(); 
    
    ТекстДок=Новый ТекстовыйДокумент; 
    ТекстДок.ДобавитьСтроку(СтрокаКодирования);                          
    ТекстДок.Записать(ИмяОченьВременногоФайла); 
    
    
    //ЗаписьТекста = Новый ЗаписьТекста(ИмяОченьВременногоФайла);g        

    ЗакодированнаяСтрока = Base64Строка(Новый ДвоичныеДанные(ИмяОченьВременногоФайла)); 
    
    Попытка 
        УдалитьФайлы(ИмяОченьВременногоФайла); 
    Исключение 
        Возврат СтрокаКодирования; 
    КонецПопытки; 
    
    Возврат ЗакодированнаяСтрока; 
    
КонецФункции
 
 Рекламное место пустует
   novichok79
 
11 - 04.01.19 - 12:05
дичь какая-то, наверное надо так:

   Соединение = Новый HTTPСоединение(
        "api.seller.rozetka.com.ua"// сервер (хост)


        // порт, по умолчанию для http используется 80, для https 443


        "МОЙЛОГИН"// пользователь для доступа к серверу (если он есть)


        Кодировать("МОЙПАРОЛЬ")// пароль для доступа к серверу (если он есть)


        // здесь указывается прокси, если он есть


        // таймаут в секундах, 0 или пусто - не устанавливать


          // защищенное соединение, если используется https


    );
 
    // Получаем текст корневой страницы через GET-запрос.


    Запрос = Новый HTTPЗапрос("/sites");
 
    Результат = Соединение.Получить(Запрос);
   SkillUp
 
12 - 04.01.19 - 12:08
(11) ТА у меня уже мозги закипают! Ни когда такого не делал, тут столкнулся и не знаю где ошибка!
   babytype
 
13 - 04.01.19 - 12:09
я бы для начала:
1. Поставил бы себе какой-нибудь отправлятель запросов (постманом удобно) - попробовал бы через него отправить запрос и добиться нормального ответа.
2. Пароль в base64 закодировал бы через любой онлайн энкодер и попробовал отправить полученную строку явно, не кодируя через 1С.
   SkillUp
 
14 - 04.01.19 - 12:13
(11) Результат.КодСостояния = 301
   SkillUp
 
15 - 04.01.19 - 12:13
(11) Если по твоему...
   SkillUp
 
16 - 04.01.19 - 12:15
(13) Вот сейчас так и буду делать, то я уже "запарился" с этой "розеткой"!
   babytype
 
17 - 04.01.19 - 12:17
Так же, может попробовать отправить так:
WinHttp.Open("POST","https://api.seller.rozetka.com.ru/sites?username=МойЛогин&password=0JzQvtC50J/QsNGA0L7Qu9GM",0);

WinHttp.Send();
Без этого:
ПараметрыПОСТ = "username="+username+"&password="+password;
   NorthWind
 
18 - 04.01.19 - 12:17
(13) ну да. Курлом (curl) можно еще. Я делал вот так (но это другой сервис):

    HTTP = Новый HTTPСоединение ("dadata.ru",,,,,Истина);
    
    Заголовки = Новый Соответствие ();
    Заголовки.Вставить("Content-Type", "application/json");
    Заголовки.Вставить("Authorization", "Token " + Токен); 
    Заголовки.Вставить("X-Secret", Секрет);             
    
    Запрос = Новый HTTPЗапрос ("/api/v2/clean/address", Заголовки);
    Запрос.УстановитьТелоИзСтроки("[""" + СтрокаСАдресом + """]", "CESU-8");
    
    Ответ = HTTP.ОтправитьДляОбработки(Запрос);
    
    Возврат Ответ.ПолучитьТелоКакСтроку();
   NorthWind
 
19 - 04.01.19 - 12:19
точно, кстати, техподдержка может сказать что у вас не так. Вы пробовали списаться с ними?
   SkillUp
 
20 - 04.01.19 - 12:23
(19) Та к поддержке ,как раз вопросов нет, пытается помочь:
Вот несколько ответов:
1).
После выполнения запроса:
https://api.seller.rozetka.com.ua/apidoc/#api-Authorization-PostSites ,
Вы получаете access_token, который вставляете в Authorization для
выполнения остальных запросов.

Как пример:

Authorization: Bearer 523ptt61Yqn_wy


2). Пример строки запроса:
curl -X POST \
  https://api.seller.rozetka.com.ua/sites \
  -H 'Content-Type: application/json' \
  -H 'cache-control: no-cache' \
  -d '{
"username":"Login",
"password":"Password(base64)"
}'

только вот, я пока не могу понять где у меня ошибка...
   SkillUp
 
21 - 04.01.19 - 12:24
(17) Сейчас попробую...
   SkillUp
 
22 - 04.01.19 - 12:24
(18) и это же сейчас попробую...
   NorthWind
 
23 - 04.01.19 - 12:25
(20) так они же вам явно указывают, что пассворд в base64. Понятно, что если вы его отдадите открытым текстом, то будет неправильный пароль. Не?
   NorthWind
 
24 - 04.01.19 - 12:26
в (13) советуют - "2. Пароль в base64 закодировал бы через любой онлайн энкодер и попробовал отправить полученную строку явно, не кодируя через 1С." -- это пробовали?
   Ник080808
 
25 - 04.01.19 - 12:32
(22) ты так и не сказал, у тя вручную логин пароль подходит? а то может у тебя пароль неправильный а ты волосы рвешь)
   SkillUp
 
26 - 04.01.19 - 12:47
(24) Сп. качаю уже "постман". Чтоб явно отправлять запросы...
   SkillUp
 
27 - 04.01.19 - 12:49
(23) ТА уже кодирую, но пока результат нулевой;

Пользуюсь этой функцией:

Функция Кодировать(СтрокаКодирования)
    
    Кодировка = "КодировкаТекста.UTF8"; 
    ИмяОченьВременногоФайла = ПолучитьИмяВременногоФайла(); 
    
    ТекстДок=Новый ТекстовыйДокумент; 
    ТекстДок.ДобавитьСтроку(СтрокаКодирования); 
    ТекстДок.Записать(ИмяОченьВременногоФайла); 
    
    
    //ЗаписьТекста = Новый ЗаписьТекста(ИмяОченьВременногоФайла);//, СокрЛП(Кодировка)); 

    //ЗаписьТекста.Записать(СтрокаКодирования); 

    //ЗаписьТекста.Закрыть(); 

    ЗакодированнаяСтрока = Base64Строка(Новый ДвоичныеДанные(ИмяОченьВременногоФайла)); 
    
    Попытка 
        УдалитьФайлы(ИмяОченьВременногоФайла); 
    Исключение 
        Возврат СтрокаКодирования; 
    КонецПопытки; 
    
    Возврат ЗакодированнаяСтрока; 

КонецФункции
   NorthWind
 
28 - 04.01.19 - 12:52
(26) Кодировка = "КодировкаТекста.UTF8" -- вы уверены? Оно же BOM запишет в начало файла.
   NorthWind
 
29 - 04.01.19 - 12:53
выведите BASE64 строку, полученную этим методом, на экран и сравните со строкой, полученной онлайн кодировщиком. Точно совпадает?
   SkillUp
 
30 - 04.01.19 - 13:58
(28) БЛИН!!!!!!!!!!!!
   SkillUp
 
31 - 04.01.19 - 14:12
(28) В ДЕСЯТКУ!!! Блин, ну как я так пропустил этот момент...


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует