$ authWithOAuthPopup () не работает на мобильных устройствах

Следующее не открывает всплывающее окно / новую вкладку / ничего не делает в Chrome 39.0.2171.50 для iOS 8.1.2 (12B440), однако, похоже, оно работает в Safari на том же устройстве:

<button ng-click="$auth.$authWithOAuthPopup('facebook')">Login with Facebook</button>

См. Plnkr: http://plnkr.co/edit/Ejd7fsyTHf6Ohn0F25Wy?p=preview

Это ошибка Chrome или Firebase / AngularFire или я что-то делаю неправильно?

Из здесь я вижу, что это может быть проблема Chrome, но я не могу $authWithOAuthRedirect() тоже работать; см .: http://plnkr.co/edit/9dd0W8X5k33LFBcCLmzs?p=preview

И всплывающее окно, и перенаправление работают в Desktop Chrome 39.0.2171.95.


person Murray Rowan    schedule 09.01.2015    source источник
comment
У меня была такая же проблема с сафари на Йосемити. Завершено с использованием $ authWithOAuthRedirect.   -  person webduvet    schedule 10.01.2015


Ответы (2)


Firebase не поддерживает всплывающие окна на всех платформах. В случае обнаружения неподдерживаемой платформы метод authWithOAuthPopup() вернет ошибку с кодом TRANSPORT_UNAVAILABLE, указывая на то, что вам следует попытаться аутентифицироваться с помощью другого транспорта, такого как перенаправление браузера.

person Rob DiMarco    schedule 12.01.2015
comment
Справедливо. Это где-то в документации? Знаете ли вы, что конкретно вызывает сбой в некоторых браузерах? - person Murray Rowan; 13.01.2015
comment
@MurraySmith К сожалению, он плохо документирован, но появляется в нескольких местах документации Firebase, например в Список ошибок. - person Rob DiMarco; 13.01.2015
comment
К сожалению, некоторые браузеры не поддерживают необходимые функции для этого транспорта. PhoneGap / Cordova / Ionic требуется прокладка (плагин InAppBrowser) для использования window.open. Chrome аналогичным образом отключен в iOS, потому что у него исторически не было надежного транспорта для window.open(...) в сочетании с безопасным межкадровым сообщением postMessage. Точно так же перенаправления недоступны для приложений PhoneGap / Cordova, потому что нет механизма для перенаправления браузера с внешнего URL-адреса общедоступного Интернета обратно в локальную файловую систему, из которой загружается приложение PhoneGap. - person Rob DiMarco; 13.01.2015
comment
Привет, @Rob, я снова столкнулся с этой проблемой, и мне было интересно, были ли какие-либо обновления в этом поведении с момента последней проверки. Спасибо! - person Murray Rowan; 08.03.2016
comment
@MurraySmith К сожалению, без изменений. - person Rob DiMarco; 08.03.2016

Я не уверен в ios, но если вы используете устройство Android вместе с ionic и firebase, выполните следующую команду, чтобы решить проблему:

ionic plugin add cordova-plugin-inappbrowser
person user1188867    schedule 13.04.2016