#c# #winforms #cefsharp #google-voice
#c# #winforms #cefsharp #google-voice
Вопрос:
Я добавил CefSharp в совершенно новое приложение winforms (я полагаю, .net 4.6).
Единственный код, необходимый для воспроизведения этого, приведен ниже:
cefSettings = new CefSettings();
cefSettings.CefCommandLineArgs.Add("enable-media-stream", "1");
Cef.Initialize(cefSettings);
browser = new ChromiumWebBrowser("voice.google.com");
this.Controls.Add(browser);
Этот код добавит элемент управления браузера CefSharp в From , переменные CefSettings и browser являются частными переменными класса, но для этого это не должно иметь значения.
Проблема, с которой я сталкиваюсь, заключается в том, что, несмотря на использование параметра «включить медиа-поток», сайт Google voice по-прежнему считает, что браузер не разрешил доступ к микрофону. Что еще хуже, микрофон действительно работает в приложении, и я могу совершать и принимать звонки (хотя пришлось взломать некоторый html, вставив JS), но когда я открываю настройки звука, он по-прежнему показывает предупреждение «дайте Google Voice разрешение на использование вашего микрофона», а выпадающие списки выбора устройства отключеныхотя на скриншоте видно, что отображаются мои аудиоустройства.
Как я уже упоминал, микрофон действительно работает, и Google voice имеет к нему доступ, но думает, что это не так. Моя теория заключается в том, что Google использует комбинацию JS, связанных с мультимедиа, для определения уровня доступа, который браузер разрешает ему при доступе к мультимедийным устройствам. Есть идеи относительно того, что Google может использовать, что несовместимо с CEF, и как это решить?
Комментарии:
1. Вы можете попробовать добавить github.com/cefsharp/CefSharp.MinimalExample/blob/master /… к вашим аргументам командной строки. Требуется ли для Google voice аутентификация? Если да, то у вас могут возникнуть проблемы с входом в свою учетную запись Google, поскольку они блокируют браузеры на основе CEF, для которых CefSharp является одним из многих. security.googleblog.com/2019/04 /…
2. Я прошел через множество различных аргументов командной строки, включая «use-fake-ui-for-media-stream», который, как я полагаю, ничего не делает, если не связан с «use-fake-device-for-media-stream», который не устраняет мою проблему, но изменяет имена устройств на что-то вроде «фальшивое устройство». Выпадающие списки устройств в GV по-прежнему отключены, и этот предупреждающий текст все еще присутствует.
3. Кроме того, я упоминал в исходном посте, что мне пришлось внедрить JS, чтобы все заработало, это было связано с наложением, которое появлялось, когда поступал звонок с просьбой предоставить Google доступ к микрофону, который у него уже был. JS, который я ввел, состоял в том, чтобы постоянно искать это наложение, когда оно появляется, и удалять его, чтобы вы могли нажать кнопку ответа на вызов позади наложения, чтобы принять вызов. Все работает …. за исключением того, что Google по-прежнему считает, что у него нет доступа к аудиоустройствам.
4. Это может быть связано с ссылкой на блог безопасности Google, но я сомневаюсь в этом, поскольку в этой ссылке упоминается аутентификация, которая отлично работает в моем приложении, поскольку я могу войти в систему без каких-либо проблем.
5. Я хватаюсь за соломинку, но если бы я мог найти способ использовать эти запросы разрешений, я мог бы понять, что происходит. У кого-нибудь есть пример того, как я мог бы это сделать?