我无法使用Cordova在Facebook上登录我的应用程序。
我将Cordova In App Browser插件添加到我的config.xml中,如下所示:
<gap:plugin name="org.apache.cordova.inappbrowser" />
我在facebook对话框窗口中成功提示输入我的电子邮件和密码但是一旦我登录,就不会显示任何内容。这很奇怪,因为它之前正在工作,即使在返回并撤消对代码的更改后,我也不确定问题现在在哪里。
使用&#34;警报&#34;我能够确定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>
答案 0 :(得分:0)
在您的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.}