[#133] Аутентификация, метод GetUserToken

Migrated from Redmine #133 | Author: Razrab Razrab
Status: Closed | Priority: Normal | Created: 2018-03-28


Проблема с запросом
{“jsonrpc”:“2.0”
“method”:“getUserToken”,
“id”:“1”,
“params”: [
“companyLogin”:“kynsi”,
“userLogin”:“username”,
“userPassword”:“userpas”
]
}

Возвращает:
“{“error”:{“code”:-32600,“message”:“Invalid Request”,“data”:null},“id”:null}”

Не могу понять причину.

Redmine Admin wrote:

Please provide us raw http request

Redmine Admin wrote:

it seems you are using named variables which is not correct
Please read and check examples here API documentation | SimplyBook.me Online Scheduling

Razrab Razrab wrote:

Соединение = Новый HTTPСоединение(“user-api.simplybook.me/login”,443,Новый ЗащищенноеСоединениеOpenSSL());
Ресурс = “{”“jsonrpc”“:”“2.0"”
|““method””:““getUserToken””,
|““id””:““1"”,
|”“params”“: [
|”“companyLogin”“:”“kynsi”“,
|”“userLogin”“:”“admin”“,
|”“userPassword”“:”“u&ENYPUpEX”"
|]
|}";
Запрос = Новый HTTPЗапрос(Ресурс);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
ДанныеОтвета = Ответ.ПолучитьТелоКакСтроку();

Razrab Razrab wrote:

Соединение = Новый HTTPСоединение(“user-api.simplybook.me/login”,443,Новый ЗащищенноеСоединениеOpenSSL());
//ЗаголовокЗапросаHTTP = Новый Соответствие();
//ЗаголовокЗапросаHTTP.Вставить("Content-Type: ", “application/json-rpc”);
//Запрос = Новый HTTPЗапрос(Ресурс);
//Ответ = Соединение.ОтправитьДляОбработки(Запрос);
//ДанныеОтвета = Ответ.ПолучитьТелоКакСтроку();

Ресурс = "{""jsonrpc"":""2.0""

““method””:““getUserToken””,
““id””:““1"”,
““params””: [
““companyLogin””:”“kynsi”“,
““userLogin””:”“admin”“,
““userPassword””:”“u&ENYPUpEX”"
]
}“;
//“getUserToken(”“kynsi””,““admin””,““u&ENYPUpEX””)";
Запрос = Новый HTTPЗапрос(Ресурс);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
ДанныеОтвета = Ответ.ПолучитьТелоКакСтроку();

Redmine Admin wrote:

should be

““params””: [
““kynsi””,
““admin””,
““u&ENYPUpEX””
]

Razrab Razrab wrote:

{
“jsonrpc”: “2.0”,
“method”: “getUserToken”,
“id”: “1”,
“params”: [
“kynsi”,
“admin”,
“u&ENYPUpEX”
]
}

Вот так выглядит окончательный вариант. Ошибка та же.
{“error”:{“code”:-32600,“message”:“Invalid Request”,“data”:null},“id”:null}

Возможно моё подключение заблокировано.

Redmine Admin wrote:

All you plugins (and API plugin) are inactivated because of finished subscription

Razrab Razrab wrote:

Redmine Admin wrote:

All you plugins (and API plugin) are inactivated because of finished subscription

Подписку продлил. Ничего не изменилось. Ошибка та же.

Dmytro Bondarev wrote:

curl ‘https://user-api.simplybook.me/login’ -H ‘Content-Type: application/json’ -d ‘{“jsonrpc”:“2.0”,“method”:“getUserToken”,“params”:[“kynsi”,“admin”,“u&ENYPUpEX”],“id”:1}’ - please look at the result.
It returns token. If you have any issues please provide full http request or curl request.

Razrab Razrab wrote:

Dmitry Bondarev wrote:

curl ‘https://user-api.simplybook.me/login’ -H ‘Content-Type: application/json’ -d ‘{“jsonrpc”:“2.0”,“method”:“getUserToken”,“params”:[“kynsi”,“admin”,“u&ENYPUpEX”],“id”:1}’ - please look at the result.
It returns token. If you have any issues please provide full http request or curl request.

Проблема сохранилась.

Соединение  =  Новый HTTPСоединение("user-api.simplybook.me/login");
ЗаголовокЗапросаHTTP = Новый Соответствие();
ЗаголовокЗапросаHTTP.Вставить("Content-Type", "application/json-rpc");

Json = Новый ЗаписьJSON;
Json.УстановитьСтроку();
Структура = Новый Структура;
Структура.Вставить("jsonrpc","2.0");
Структура.Вставить("method","getUserToken");


Парам = Новый Массив;
Парам.Добавить("kynsi");
Парам.Добавить("admin");
Парам.Добавить("u&ENYPUpEX");


Структура.Вставить("params",Парам);
Структура.Вставить("id","1");
Json.УстановитьСтроку();
ЗаписатьJson(Json,Структура);
Ресурс = Json.Закрыть();
Запрос = Новый HTTPЗапрос(Ресурс,ЗаголовокЗапросаHTTP);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);

Мой код. Не уверен, что будет понятно. Это 1С.

Razrab Razrab wrote:

Другие запросы тоже не работают.

Dmytro Bondarev wrote:

Have you tried to call curl request?
Unfortunately we are not able to help you with your code.
We can help you if you provide HTTP Request. In this case we will say where the problem is.

Razrab Razrab wrote:

{
“jsonrpc”: “2.0”,
“method”: “getUserToken”,
“params”: [
“kynsi”,
“admin”,
“u&ENYPUpEX”
],
“id”: “1”
}

Dmytro Bondarev wrote:

It is not a HTTP Rquest it is your JSON. Which probably does not go to our server.
As i understand properly you should use УстановитьТелоИзСтроки method to set body of request. And pass ‘/login’ to HTTPЗапрос(Ресурс instead of Ресурс.
[[Работа с http-запросами (get и post) в языке 1С 8.3, 8.2 (в примерах)]]

Razrab Razrab wrote:

Теперь в ответ сервер возвращает 500

Dmytro Bondarev wrote:

So please provide us full http request, otherwise it is impossible to help you.
You have working example with cURL, you should make the same request.

Razrab Razrab wrote:

К сожалению я не могу увидеть то, что 1с передает в запросе в виде curl. Но благодаря вашей помощи я продвинулся вперед. Теперь в ответ я получаю {“error”:{“code”:-32601,“message”:“Method not found”,“data”:null},“id”:“1”,“jsonrpc”:“2.0”}

Может быть есть возможность посмотреть log записи?

Razrab Razrab wrote:

пробовал передавать getToken и getUserToken. Ответ одинаковый.

Dmytro Bondarev wrote:

It looks like you are using wrong URL. Please send us your code.