所以我试图在我的AngularJS应用程序中做一些似乎是最简单的SimpleLogin电子邮件/密码验证版本。我为我的应用程序设置了一个forge,我可以成功地读取和写入数据,并且我使用该引用进行身份验证。我在仪表板中启用了电子邮件/密码身份验证,并添加了一个我尝试进行身份验证的注册用户。我没有启用其他形式的身份验证。
注意:我在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."
}
}
此外,我在我的控制台中收到此消息(作为错误,而不是通过console.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(并且显然被截断了......),所以我不知道是什么他到底去了。
据我所知,我做的一切都是正确的,但我仍然不知道会导致什么问题。我错过了什么?
答案 0 :(得分:3)
更新:
所以在将我的实际项目代码发送给Firebase的Rob之后,他用这个回击了我:
实例化Firebase简单登录客户端时,需要传递 在Firebase引用中(即
new Firebase(...)
)而不是 角度服务或AngularFire对象。替换中的itemListServicenew Firebase('https://myapp.firebaseio.com/')
上面的对象 似乎正好解决了。
上面的示例代码并没有反映出这一点(导致问题的一件事当然),但假设我的服务被称为&#34; FirebaseService&#34;,我的实际代码来自:
$scope.auth = $firebaseSimpleLogin(FirebaseService);
到此:
var firebaseRef = new Firebase('http://myapp.firebasio.com');
$scope.auth = $firebaseSimpleLogin(firebaseRef);
所以现在不是使用我的服务来返回Firebase引用(我仍然使用它来读取和写入数据),而是将对Firebase的直接引用传递给$ scope.auth,然后我可以成功致电$login()
。
谢谢,Rob!