为什么我的 Google 身份验证在 Firebase 中不起作用?
Why doesn't my Google authentication work in Firebase?
我根据 Firebase 在 http://jsfiddle.net/firebase/a221m6pb/
提供的示例对我的 Google 登录进行了建模
然而,当我 运行 我的代码 (https://firetest-wadeziegler.c9.io/logon) 时,弹出窗口在选择用户后变为空白并且永远不会关闭。永远不会执行回调代码。知道为什么这不起作用吗?
OAuth 重定向的授权域:
firetest-wadeziegler.c9.io
logon.js
function logonWithGoogle() {
var promise = session.logonWithGoogle();
$.when(promise)
.then(function (authData) {
setTimeout(function() { window.location.replace('/') }, 0);
}, function (error) {
showMessageBox('Logon Failed', error);
});
}
session.js
var session = new Session();
function Session() {
this.firebase = new Firebase("https://glowing-inferno-3026.firebaseio.com");
this.firebase.onAuth(function globalOnAuth(authData) { } );
}
Session.prototype.isLoggedOn = function() {
return this.firebase.getAuth() != null;
}
// Returns Promise object
Session.prototype.logonWithGoogle = function() {
var deferred = $.Deferred();
this.firebase.authWithOAuthPopup("google",
function (err, user) {
if (err) {
deferred.reject(err);
}
if (user) {
deferred.resolve(user);
}
}
, {
remember: "sessionOnly",
scope: "email,profile"
});
return deferred.promise();
}
问题出在调用代码和表单内点击时缺少 preventDefault()
。单击后页面立即重新加载,但速度太快了,我没有注意到。愚蠢的错误。
<button onClick="logonWithGoogle(); return false /* prevent submit */">
我根据 Firebase 在 http://jsfiddle.net/firebase/a221m6pb/
提供的示例对我的 Google 登录进行了建模然而,当我 运行 我的代码 (https://firetest-wadeziegler.c9.io/logon) 时,弹出窗口在选择用户后变为空白并且永远不会关闭。永远不会执行回调代码。知道为什么这不起作用吗?
OAuth 重定向的授权域:
firetest-wadeziegler.c9.io
logon.js
function logonWithGoogle() {
var promise = session.logonWithGoogle();
$.when(promise)
.then(function (authData) {
setTimeout(function() { window.location.replace('/') }, 0);
}, function (error) {
showMessageBox('Logon Failed', error);
});
}
session.js var session = new Session();
function Session() {
this.firebase = new Firebase("https://glowing-inferno-3026.firebaseio.com");
this.firebase.onAuth(function globalOnAuth(authData) { } );
}
Session.prototype.isLoggedOn = function() {
return this.firebase.getAuth() != null;
}
// Returns Promise object
Session.prototype.logonWithGoogle = function() {
var deferred = $.Deferred();
this.firebase.authWithOAuthPopup("google",
function (err, user) {
if (err) {
deferred.reject(err);
}
if (user) {
deferred.resolve(user);
}
}
, {
remember: "sessionOnly",
scope: "email,profile"
});
return deferred.promise();
}
问题出在调用代码和表单内点击时缺少 preventDefault()
。单击后页面立即重新加载,但速度太快了,我没有注意到。愚蠢的错误。
<button onClick="logonWithGoogle(); return false /* prevent submit */">