Статус: Участник
Группы: Участники
Зарегистрирован: 05.02.2016(UTC) Сообщений: 19  Откуда: Спб Сказал(а) «Спасибо»: 1 раз Поблагодарили: 1 раз в 1 постах
|
Добрый день, уважаемые участники форума. Подскажите, пожалуйста, каким образом я должен использовать API данного плагина? Вот самая простая задача: я хочу получить версию КриптоПро CSP. Казалось бы даже есть пример, решающий именно эту задачу: http://cpdn.cryptopro.ru...gin-samples-version.htmlТолько что же это за пример, если он не работает? Если верить примеру, то достаточно подключить скрипт cadesplugin_api.js, скопировать в JS функции run() и get_version() и все должно работать. Но как же оно будет работать, если используемых в JS-коде элементов на странице просто нет: Код:var elem = document.getElementById("ProviderName");
Нет, я могу удалить данные куски кода, и оставить только то, что меня действительно интересует: Код:
var oAbout = cadesplugin.CreateObject("CAdESCOM.About");
oVersion= oAbout.CSPVersion(ProviderName, parseInt(ProviderType, 10));
var Minor = oVersion.MinorVersion;
var Major = oVersion.MajorVersion;
var Build = oVersion.BuildVersion;
var Version = oVersion.toString();
вот только я сразу же получу ошибку: Код:cadesplugin.CreateObject is not a function
А если вызову Код:var oAbout = cadesplugin.CreateObjectAsync("CAdESCOM.About");
то получу ошибку в следующей строке: Код:oAbout.CSPVersion is not a function
Кто разобрался, подскажите, пожалуйста, как получить версию CSP? Просто вывести ее в консоль. С остальным уже разберусь сам, мне бы "идеологию" понять на простейшем примере.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,672   Сказал «Спасибо»: 572 раз Поблагодарили: 2301 раз в 1802 постах
|
Здравствуйте.
В примере 2 способа инициализации переменных для вызова get_version. Используйте один из них, например, в котором явно указано имя и тип криптопровайдера.
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.02.2016(UTC) Сообщений: 19  Откуда: Спб Сказал(а) «Спасибо»: 1 раз Поблагодарили: 1 раз в 1 постах
|
Автор: Андрей *  Здравствуйте.
В примере 2 способа инициализации переменных для вызова get_version. Используйте один из них, например, в котором явно указано имя и тип криптопровайдера.
Я понимаю, что можно удалить несколько строк, и использовать значения переменных по умолчанию. Но проблема не в этом, т.к. ошибку я получаю дальше по коду, в функции get_version(). Чтобы говорить предметно - я максимально сократил код: Код:<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> Пример использования КриптоПро ЭЦП Browser plug-in </title>
<script language="javascript" src="cadesplugin_api.js"></script>
</head>
<body>
<script>
var canPromise = !!window.Promise;
if(canPromise) {
cadesplugin.then(function () {
var oAbout = cadesplugin.CreateObject("CAdESCOM.About");
console.log(oAbout);
},
function(error) {
console.log("Error");
}
);
}
</script>
</body>
</html>
Получаю ошибку: Код:Uncaught (in promise) TypeError: cadesplugin.CreateObject is not a function(…)
Браузер Chrome v.48
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,672   Сказал «Спасибо»: 572 раз Поблагодарили: 2301 раз в 1802 постах
|
На демо странице тоже не определяется версия CSP? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.02.2016(UTC) Сообщений: 19  Откуда: Спб Сказал(а) «Спасибо»: 1 раз Поблагодарили: 1 раз в 1 постах
|
Автор: Андрей *  На демо странице тоже не определяется версия CSP? На демо-странице все отлично. А стал разбираться - и завис в самом начале.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.02.2016(UTC) Сообщений: 19  Откуда: Спб Сказал(а) «Спасибо»: 1 раз Поблагодарили: 1 раз в 1 постах
|
По-прежнему буду рад помощи и идеям. Неужели никто не пользовался API? :-(
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
В зависимости от браузера у вас будет доступен или метод CreateObject или метод CreateObjectAsync. Первый вариант возвращает сразу создаваемый обьект, второй возвращает Promise который при успешном "resolve" станет обьектом нужного типа. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 14.03.2017(UTC) Сообщений: 2  Откуда: Москва
|
Автор: cross  В зависимости от браузера у вас будет доступен или метод CreateObject или метод CreateObjectAsync. Первый вариант возвращает сразу создаваемый обьект, второй возвращает Promise который при успешном "resolve" станет обьектом нужного типа. Так получается нужно разный код для разных браузеров писать? Есть какой-то способ приведения к единому js коду?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 04.04.2016(UTC) Сообщений: 20  Откуда: Москва
|
разный код нужно не для разных браузеров писать, а для разных реализаций api - синхронной и асинхронной. я делал фабрику, которая определяла, в каком режиме работать и возвращала асинхронную абстракцию с одной из двух реализаций. в итоге по приложению используется один и тот же контракт, но в зависимости от ситуации работает разная реализация. и да, если хочется в асинхронной реализации использовать async/await, нужно быть готовым, что не все версии браузеров этот синтаксис понимают. я не парился и работал прям с Promise (который, кстати, тоже в зависимости от браузера есть нативный, либо нужно подключать либу). |
Написал клиент к Browser plug-in для обёртки синхронной и асинхронной версий -- STAR-PRO.RU |
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 14.03.2017(UTC) Сообщений: 2  Откуда: Москва
|
можете поделиться ссылочкой на чудодейственную фабрику?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close