Всплывающее окно Firebase facebook возвращает null onAuth

Мой всплывающий вход в firebase facebook на ionic работал правильно, но внезапно он перестал работать (ну, я модифицировал приложение, но не трогал службу). Процесс все еще работает в браузере (когда я использую ионную подачу), но не работает в ионном приложении.

var auth = $fAuth(ref);
  // login with Facebook
  auth.$onAuth(function(authData){ // authData -> null
    console.log("Auth..", authData);  // Auth.. null  
    /* refresh user data on firebase and registering push */
  });
  auth.$authWithOAuthPopup("facebook").catch(function(error) {
    console.log("Authentication failed:", error);
  });

Когда это работало, функция $onAuth cb получала объект в переменной authData со свойствами, такими как uid и facebook.

когда я бегу:

ref.authWithOAuthPopup("facebook",function(){console.log(arguments)})

or:

ref.authWithOAuthPopup("twitter",function(){console.log(arguments)})

функция обратного вызова никогда не срабатывает.

Я запускаю процесс аутентификации в событии $ionicPlatform.ready. Я уже удалил и переустановил приложение и очистил данные приложения.

Спасибо!


person user3100334    schedule 06.01.2016    source источник


Ответы (1)


Вы уверены, что он не горит?

Функция обратного вызова, которая будет вызываться после завершения аутентификации. В случае сбоя первым аргументом будет объект Error, указывающий на сбой, с атрибутом машиночитаемого кода. В случае успеха первый аргумент будет нулевым, а второй будет объектом, содержащим поля uid (уникальный идентификатор пользователя), provider (строка, идентифицирующая поставщика), auth (полезные данные токена аутентификации) и expires ( время истечения срока действия в секундах с эпохи Unix) — и больше, в зависимости от поставщика, используемого для аутентификации.

Вы не привели аргументы там. Я думаю, это должно сработать, если вы попробуете еще раз. Пример кода из firebase:

ref.authWithOAuthPopup("facebook", function(error, authData) {
//                                          ^^^^^  ^^^^^^^^
  if (error) {
    console.log("Login Failed!", error);
  } else {
    console.log("Authenticated successfully with payload:", authData);
  }
});
person nicfo    schedule 07.01.2016
comment
О, просто для краткости, arguments - это массив со всеми аргументами, переданными функции при ее вызове, я тоже попробовал код, который вы предлагаете, и он не срабатывает:/ - person user3100334; 08.01.2016
comment
Как я уже сказал, обратный вызов authWithOAuthPopuo даже не срабатывает. Я получаю ноль в обратном вызове onAuth. ref.onAuth(function(data){ /* здесь данные равны нулю */}); - person user3100334; 08.01.2016
comment
первым параметром функции является объект ошибки. секунда — это фактические данные. Если первый параметр нулевой, это означает, что он прошел успешно (/ошибки нет). ref.onAuth(function(error, data){ /* error will be null, data should be the auth-object */}); - person nicfo; 08.01.2016
comment
Хм, я попытался, и я получаю сообщение об ошибке -> null и данные -> undefined. Я проверил документы Firebase, обратный вызов onAuth передает только один параметр (вот ссылка: firebase.com/docs/web/api/firebase/onauth.html) - person user3100334; 09.01.2016
comment
о, извините, это плохо, я имел в виду authWithOAuthPopup, а не onAuth(). вот ссылка - person nicfo; 09.01.2016
comment
О, нет проблем, спасибо за помощь :). я уже пробовал authWithOAuthPopup с параметрами, но функция cb никогда не вызывается. - person user3100334; 09.01.2016
comment
не могли бы вы предоставить plunkr/jsfiddle/что-то в этом роде? думаю проще будет помочь. - person nicfo; 10.01.2016
comment
Проблема в том, что он все еще работает в браузере, но не на ионной платформе (как гибридное приложение для Android). - person user3100334; 11.01.2016