[英]Cordova Firebase Facebook Login
我无法使用Cordova使Facebook登录名在我的应用程序上正常工作。
我将Cordova In App Browser插件添加到config.xml中,如下所示:
<gap:plugin name="org.apache.cordova.inappbrowser" />
并且在Facebook对话窗口中成功提示我输入我的电子邮件和密码,但是一旦我登录,就不会显示任何内容。 这很奇怪,因为它以前曾经工作过,而且即使返回并撤消对代码的更改后,我也不知道现在问题出在哪里。
使用“警报”,我可以查明ref.authWithOAuthRedirect
的代码不再运行,因此我不确定问题到底出在哪里。
这是我的login.html
文件:
<body>
<button>
Login To Facebook
</button>
<div id="info"></div>
<script src="cordova.js"></script>
<script>
$('button').click(function(){
var ref = new Firebase("https://xxx.firebaseio.com");
ref.authWithOAuthPopup("facebook", function(error, authData) {
if (error) {
if (error.code === "TRANSPORT_UNAVAILABLE") {
// fall-back to browser redirects, and pick up the session
// automatically when we come back to the origin page
ref.authWithOAuthRedirect("facebook", function(error) {
$('#info').append(authData.facebook.displayName
+ " " + authData.facebook.email + '<br />');
$('#info').append('<img src="' + authData.facebook.profileImageURL + '"/>');
});
}
} else if (authData) {
// user authenticated with Firebase
$('#info').append(authData.facebook.displayName
+ " " + authData.facebook.email + '<br />');
$('#info').append('<img src="' + authData.facebook.profileImageURL + '"/>');
}
}, {
scope: "email" // the permissions requested
});
});
</script>
</body>
这是我的config.xml
:
<widget id="com.xxx.xxx" version="1.9.0">
<name>My App</name>
<description>
Your app description here.
</description>
<author email="example@gmail.com" href="http://example.com">
My App
</author>
<content src="login.html"/>
<access origin="*" />
<access origin="https://xxx.firebaseio.com" />
<access origin="https://auth.firebase.com" />
<gap:plugin name="org.apache.cordova.inappbrowser" />
</widget>
在您的Facebook应用程序配置中,单击左侧导航菜单上的“设置”选项卡。 然后转到顶部的“高级”选项卡,然后向下滚动到“安全性”部分。 在该部分的底部,将https://auth.firebase.com/v2/ / auth / facebook / callback添加到您的有效OAuth重定向URI,然后单击页面底部的保存更改。
编辑我建议您使用以下两个库在设备上进行Facebook登录-如果用户在设备上安装了Facebook,请使用cordova-facebbok4。这将自动提示本地Facebook应用程序登录。
如果未安装facebook,则可以编写使用OpenFB的catch方法
无论如何,您都必须使用authWithOAuthToken进行Facebook登录。 这是使用cordova插件获取令牌的示例
//Inside Ionic ready
if($ionicPlatform.isWebView()){
$cordovaFacebook.login(["public_profile", "email"]).then(function(success){
var token = success.authResponse.accessToken;
ref.authWithOAuthToken("facebook", token, function(error, authUserData){
if(error){
console.error("Authentication failed:", error);
$ionicPopup.alert({
title: "Error",
template: 'There was an error logging you in with facebook.'
});
d.reject(error);
}
else{ //Logged in!}
else{
//code for open fb login.}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.