我已将Firebase设置为我的Cordova应用程序以通过Facebook进行身份验证,因为我找到了解决方法,因此可以在Android中正常运行。但是,在我的浏览器中,我无法使其正常工作。
问题:一旦我调用BTNode
方法将其重定向到firebase并正确登录(在firebase的仪表板上检查),然后它重定向到我的localhost:8000但它永远不会在signInWithRedirect(provider)
方法中停止。 / p>
未显示控制台日志错误。
我的应用设置:
的index.html
getRedirectResult()
app.js
<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>
login_controller.js
var config = {
apiKey: "*********",
authDomain: "*********",
databaseURL: "*********",
projectId: "*********",
storageBucket: "*********",
messagingSenderId: "*********"
};
firebase.initializeApp(config);
Firebase配置
添加了localhost域名
网络环境设置
Facebook身份验证设置
我错过了什么?
答案 0 :(得分:0)
我这样设置(它与我写的plugin
交织在一起):
当确定用户未登录时,将调用此方法:
toggleWebViewWithAuth: function () {
var win = function(d) {
console.log("web view toggled, going to auth");
auth.presentLogin().then(function() {
auth.getResult();
});
};
var fail = function(e) {
console.log(e)
}
cordova.exec(win, fail, "NavigationPlugin", "toggleWebView", []);
}
auth.presentLogin
是我制作的async
函数,看起来像这样:
presentLogin: async function () {
var provider = new firebase.auth.FacebookAuthProvider();
//provider.addScope('default');
provider.addScope('email');
//provider.addScope('pages_show_list');
return firebase.auth().signInWithRedirect(provider);
},
在auth
变量中也是:
getResult: function () {
firebase.auth().getRedirectResult().then(function(result) {
if (result.credential) {
// This gives you a Facebook Access Token. You can use it to access the Facebook API.
var token = result.credential.accessToken;
// ...
}
// The signed-in user info.
app.user = result.user;
console.log("result.user in presentLogin:", app.user);
}).then(function() {
//iosNav.getCurrentTabControllerName();
iosNav.toggleWebView();
}).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
alert("Error:", error);
// The email of the user's account used.
var email = error.email;
// The firebase.auth.AuthCredential type that was used.
var credential = error.credential;
// ...
});
}
因此,现在返回并阅读我发布的toggleWebViewWithAuth
方法,您将看到我的用法。这样可以使getRedirectWithResult
等待signInWithRedirect
。所有这些都可以在插件外部进行配置(无需使用cordova.exec
,iOS端的所有方法都是打开或关闭UIWebView
)-最重要的部分是您只需要确保使用我的presentLogin
方法来呈现它,并在getResult
块中调用then
。
另外,对于js
导入,firebase-app
和所有firebase
模块js
文件,都使用全局firebase.js
导入替换。您只需要:
<script>.../firebase-app.js</script>
<script>.../firebase-auth.js</script>