【发布时间】:2018-02-04 10:56:51
【问题描述】:
我已将 Firebase 设置到我的 Cordova 应用程序以通过 Facebook 进行身份验证,由于我找到了一种解决方法,这在 Android 中运行良好。但是,在我的浏览器中,我无法让它工作。
问题:一旦我调用 signInWithRedirect(provider) 方法,它会重定向到 firebase 并正确登录(在 firebase 的仪表板上检查),然后它会重定向到我的 localhost:8000 但它永远不会在 getRedirectResult() 方法中停止。
没有显示控制台日志错误。
我的应用设置:
index.html
<script src="https://www.gstatic.com/firebasejs/4.3.0/firebase.js"></script>
<script src="https://www.gstatic.com/firebasejs/4.1.1/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/4.1.1/firebase-auth.js"></script>
app.js
var config = {
apiKey: "*********",
authDomain: "*********",
databaseURL: "*********",
projectId: "*********",
storageBucket: "*********",
messagingSenderId: "*********"
};
firebase.initializeApp(config);
login_controller.js
var provider = new firebase.auth.FacebookAuthProvider();
firebase.auth().signInWithRedirect(provider).then(function() {
firebase.auth().getRedirectResult().then(function(result) {
// This gives you a Google Access Token.
// You can use it to access the Google API.
var token = result.credential.accessToken;
// The signed-in user info.
var user = result.user;
console.log('result '+ result);
debugger;
}).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
debugger;
});
}).catch(function(error){
debugger;
});
Firebase 配置
添加了 localhost 域
网络环境设置
Facebook 身份验证设置
我错过了什么?
【问题讨论】:
-
在浏览器环境中,
firebase.auth().getRedirectResult()应该在firebase.auth().signInWithRedirect(provider)调用之外调用。您还可以添加一个onAuthStateChanged侦听器,当用户未登录时,调用signInWithRedirect,否则视为已登录。 -
不起作用..如果我在外部调用 getRedirectResult 将在 signInWithRedirect 抛出和空结果之前运行。
-
getRedirectResult如果不是从重定向登录返回,则将解析为空结果。通常,在您确认用户未通过onAuthStateChanged侦听器登录后,当用户单击登录时,您应该调用signInWithRedirect。您添加getRedirectResult以获得该结果。但是您可能已经登录并调用它会得到一个空结果。 -
你解决了这个问题吗?
标签: javascript cordova firebase firebase-authentication facebook-login