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

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

    Соединение = Новый HTTPСоединение(
        "api.seller.rozetka.com.ua/sites", // сервер (хост)
        , // порт, по умолчанию для http используется 80, для https 443
        "МОЙЛОГИН", // пользователь для доступа к серверу (если он есть)
        Кодировать("МОЙПАРОЛЬ"), // пароль для доступа к серверу (если он есть)
        , // здесь указывается прокси, если он есть
        , // таймаут в секундах, 0 или пусто - не устанавливать
          // защищенное соединение, если используется https
    );

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

    Результат = Соединение.Получить(Запрос);

    Сообщить("Нам вернули код: " + Результат.КодСостояния);

    Сообщить("Тело результата: " + Результат.ПолучитьТелоКакСтроку());
    
КонецПроцедуры

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

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

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

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

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

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

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

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

    );

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

    Запрос = Новый HTTPЗапрос("/sites");

    Результат = Соединение.Получить(Запрос);
12 SkillUp
 
04.01.19
12:08
(11) ТА у меня уже мозги закипают! Ни когда такого не делал, тут столкнулся и не знаю где ошибка!
13 babytype
 
04.01.19
12:09
я бы для начала:
1. Поставил бы себе какой-нибудь отправлятель запросов (постманом удобно) - попробовал бы через него отправить запрос и добиться нормального ответа.
2. Пароль в base64 закодировал бы через любой онлайн энкодер и попробовал отправить полученную строку явно, не кодируя через 1С.
14 SkillUp
 
04.01.19
12:13
(11) Результат.КодСостояния = 301
15 SkillUp
 
04.01.19
12:13
(11) Если по твоему...
16 SkillUp
 
04.01.19
12:15
(13) Вот сейчас так и буду делать, то я уже "запарился" с этой "розеткой"!
17 babytype
 
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;
18 NorthWind
 
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.ОтправитьДляОбработки(Запрос);
    
    Возврат Ответ.ПолучитьТелоКакСтроку();
19 NorthWind
 
04.01.19
12:19
точно, кстати, техподдержка может сказать что у вас не так. Вы пробовали списаться с ними?
20 SkillUp
 
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)"
}'

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

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

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

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