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 ответ:
Обновление:
, Так что после отправки моего фактического кода проекта, чтобы ограбить по опорному пункту, он ударил меня обратно с этим:
При создании экземпляра Firebase Simple Login client необходимо пройти в ссылке Firebase (то есть
new Firebase(...)
), а не в Угловой объект обслуживания или AngularFire. Замена itemListService в вышеуказанного объекта сnew Firebase('https://myapp.firebaseio.com/')
кажется, все уладится прямо сейчас.Приведенный выше пример кода не отражал этого (единственное, что вызывало проблему, конечно конечно), но предполагая, что моя служба называется "FirebaseService", мой фактический код исходил из этого:
$scope.auth = $firebaseSimpleLogin(FirebaseService);
К этому:
Поэтому теперь вместо того, чтобы использовать мой сервис для возврата ссылки Firebase (которую я все еще использую для чтения и записи данных), я передаю прямую ссылку на Firebase в $scope.auth, который я затем могу успешно вызватьvar firebaseRef = new Firebase('http://myapp.firebasio.com'); $scope.auth = $firebaseSimpleLogin(firebaseRef);
$login()
. Спасибо, Роб!