Chrome Native Messaging API не работает в Linux

Я пытался получить официальный Пример собственного обмена сообщениями, работающий на моем Debian Linux, но когда я нажимаю кнопку подключения, соединение с хостом не устанавливается и возникает ошибка "Указанный собственный хост обмена сообщениями не найден". возвращается.

От других людей, у которых такая же проблема, я узнал, что это, вероятно, ошибка в моем родном манифесте приложения, но я не могу найти ее уже несколько часов. Он находится по адресу ~/.config/google-chrome/NativeMessagingHosts/com.google.chrome.example.echo.json и гласит:

{
  "name": "com.google.chrome.example.echo",
  "description": "Chrome Native Messaging API Example Host",
  "path": "/path/to/my/home/Desktop/native.py",
  "type": "stdio",
  "allowed_origins": [
    "chrome-extension://mcmmilohkmnlhdododggiegdjholjfan/"
  ]
}

Единственное, что я изменил, это идентификатор расширения Chrome и путь, который я проверил (при запуске из моей оболочки приложение запускается и ведет себя правильно). Его код взят из вышеупомянутого примера.

Есть идеи, что может быть не так? Я в тупике.


person t.animal    schedule 22.02.2014    source источник


Ответы (3)


Итак, я покопался в исходниках Chrome для моей версии (33.0.1750.117) и выяснил, что файл json никогда не читается (и подтвердил свой вывод с помощью inotifywatch). Я думаю (судя по этот файл строка 143ff и этот файл), что домашний каталог никогда не просматривается при поиске файла манифеста.

Однако я наткнулся на переключатель командной строки, который можно использовать для поиска файлов манифеста: --native-messaging-hosts="com.google.chrome.example.echo=~/.config/google-chrome/NativeMessagingHosts/com.google.chrome.example.echo.json". Несмотря на то, что это не постоянное решение, оно работает для меня, потому что у меня нет root на машине, на которой я разрабатываю, и я не могу писать в /etc/opt/

person t.animal    schedule 23.02.2014
comment
Слишком много путаницы. Пожалуйста, поместите их на шаг 1, 2. как вы запускаете Chromium, не могли бы вы опубликовать точный вывод chrome://version командной строки? - person ; 10.02.2016

Я обнаружил, что то же самое верно и для OSX с Chrome 33.0.1750.117.

Вы должны поместить его в папку /Library/Google/Chrome/NativeMessagingHosts/, а не в папку пользователя Library/Google/Chrome/NativeMessagingHosts/.

(Я бы прокомментировал, но моя репутация этого не позволяет)

person daniel    schedule 25.02.2014
comment
Я поместил его в правильное место, но все равно не удалось в OSX 10.9.4 - person ; 24.09.2014
comment
@YumYumYum Ваше редактирование было неверным. Я откатил его обратно. - person Xan; 24.09.2014
comment
Я думаю, что это снова неправильно ~/Library или /Library? обычно библиотека без косой черты неверна или недействительна. - person ; 24.09.2014
comment
Пользователь @YumYumYum подразумевает ~/, но в вашем редактировании было / - person Xan; 24.09.2014

https://code.google.com/p/chromium/issues/detail?id=237873

В соответствии с этой ошибкой установка на уровне пользователя будет поддерживаться в Chrome-34.

person tnrgus    schedule 25.03.2014