AngularFire простой логин (email/пароль) - доступ-контроля-разрешить-происхождения/неизвестная ошибка


Поэтому я пытаюсь сделать то, что кажется самой мертвой версией SimpleLogin email/password authentication в моем приложении AngularJS. У меня есть кузница, настроенная для моего приложения, я могу успешно читать и записывать в нее данные, и я использую эту ссылку для своей аутентификации. Я включил аутентификацию по электронной почте / паролю в своей панели мониторинга и добавил одного зарегистрированного пользователя, которого я пытаюсь аутентифицировать. У меня нет других включенных форм аутентификации.

Примечание: Я запускаю этот код локально в 127.0.0.1:9000, поэтому я не знаю, имеет ли это какое-либо отношение к результату или нет (надеюсь, что нет, я не хочу, чтобы это было построено на живом сервере...)

Так или иначе, перейдем к коду...

=====================================

Это буквально все, что у меня есть на мой взгляд:
<button ng-click="dummySignin()">Dummy Signin</button>

И вот мой угловой код:

angular.module('myApp')
  .controller('MainCtrl', function ($scope, $firebaseSimpleLogin) {
    var ref = new Firebase('https://dummyapp.firebaseio.com/myforge');
    $scope.auth = $firebaseSimpleLogin(ref);

    $scope.dummySignin = function() {
      console.log('signing in...');

      $scope.auth.$login('password', {
        email: 'guy@face.com',
        password: 'cookie'
      }).then(function(user) {
        console.log('user: ', user);
      }, function(error) {
        console.log('error: ', error);
      });
    };
  );
});
Я знаю, что ссылка Firebase настроена правильно, потому что, когда я пробую случайный адрес электронной почты, я получаю ошибку INVALID EMAIL. Когда я использую правильный адрес электронной почты, это JSON, который возвращается:
error: {
  code: "UNKNOWN_ERROR",
  data: {
    message: "FirebaseSimpleLogin: FirebaseSimpleLogin: An unknown error occurred."
  }
}

Кроме того, я получаю это сообщение в консоли (как ошибку, а не через консоль.log):

XMLHttpRequest cannot load https://auth.firebase.com/auth/firebase?email=guy%40face.com&password=cookie&firebase=127.0&v=1.3.1. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:9000' is therefore not allowed access.]

У меня есть localhost и 127.0.0.1 в моем списке источников авторизованного запроса, но это не должно иметь значения, поскольку (насколько я могу судить) это влияет только на методы входа OAuth, такие как Facebook и Twitter. Другая странная часть этой ошибки заключается в том, что переменная firebase в строке запроса выглядит так, как будто она указывает на localhost (и является видимо, усекли...), так что я не знаю, что там, черт возьми, происходит.

Насколько я могу судить, я все делаю правильно, но я все еще не знаю, что могло бы вызвать эту проблему. Чего мне не хватает?
1 4

1 ответ:

Обновление:

, Так что после отправки моего фактического кода проекта, чтобы ограбить по опорному пункту, он ударил меня обратно с этим:

При создании экземпляра Firebase Simple Login client необходимо пройти в ссылке Firebase (то есть new Firebase(...)), а не в Угловой объект обслуживания или AngularFire. Замена itemListService в вышеуказанного объекта с new Firebase('https://myapp.firebaseio.com/') кажется, все уладится прямо сейчас.

Приведенный выше пример кода не отражал этого (единственное, что вызывало проблему, конечно конечно), но предполагая, что моя служба называется "FirebaseService", мой фактический код исходил из этого:

$scope.auth = $firebaseSimpleLogin(FirebaseService);

К этому:

var firebaseRef = new Firebase('http://myapp.firebasio.com');
$scope.auth = $firebaseSimpleLogin(firebaseRef);
Поэтому теперь вместо того, чтобы использовать мой сервис для возврата ссылки Firebase (которую я все еще использую для чтения и записи данных), я передаю прямую ссылку на Firebase в $scope.auth, который я затем могу успешно вызвать $login(). Спасибо, Роб!