Facebook登录没有响应FB.login响应
问题描述:
我正在与facebook集成的android phonegap应用程序。 FB.login(函数(响应)函数有一个响应处理函数,它在 用户点击fb按钮时被调用,但它每次都没有进入函数响应 或alert('test'),它会进入这个脚本只有当我点击 约5或6次。我需要的是在第一次登录Facebook时获取访问令牌。我已经通过了很多关于此的链接,但 无法找到一个确切的解决方案。 。Facebook登录没有响应FB.login响应
FB login callback function not responding if user is already logged in facebook
即使这个问题似乎是相同的,但我不能弄明白我的解决方案。
这是代码上午工作:
<div id="data">Hello Facebooktesters, loading ...</div>
<button onclick="login()">Login</button>
<button onclick="me()">Me</button>
<button onclick="logout()">Logout</button>
<button onclick="Post()">facebookWallPost</button>
<script type="text/javascript">
document.addEventListener('deviceready', function() {
try {
alert('Device is ready! Make sure you set your app_id below this alert.');
FB.init({
appId : "xxxxxxxxxxxxxxx",
nativeInterface : CDV.FB,
useCachedDialogs : false
});
document.getElementById('data').innerHTML = "FB init executed";
} catch (e) {
alert(e);
}
}, false);
function me() {
FB.api('/me/friends', {
fields : 'id, name, picture'
}, function(response) {
if (response.error) {
alert(JSON.stringify(response.error));
} else {
var data = document.getElementById('data');
fdata = response.data;
console.log("fdata: " + fdata);
response.data.forEach(function(item) {
var d = document.createElement('div');
d.innerHTML = "<img src="+item.picture+"/>" + item.name;
data.appendChild(d);
});
}
var friends = response.data;
console.log(friends.length);
for (var k = 0; k < friends.length && k < 200; k++) {
var friend = friends[k];
var index = 1;
friendIDs[k] = friend.id;
//friendsInfo[k] = friend;
}
console.log("friendId's: " + friendIDs);
});
}
function login() {
FB.login(function(response) {
alert('test');
if (response.authResponse) {
alert('logged in');
var access_token = FB.getAuthResponse()['accessToken'];
alert(access_token);
window.location = "test.html"
} else {
alert('not logged in');
}
}, {
scope : "email"
});
}
function logout() {
alert('test');
FB.logout(function(response) {
alert('logged out');
//window.location.reload();
});
}
function Post(ele) {
var domain = 'http://192.168.0.46:8082/';
console.log('Debug 1');
var params = {
method: 'feed',
name: 'test - test',
link: domain+'test/test/showproddetails.action?product.productId=1',
picture: 'http://www.careersolutions.com/test.png',
caption: 'test',
description: 'test'
};
console.log(params);
FB.ui(params, function(obj) { console.log(obj);});
}
</script>
谢谢 拉吉
答
你缺少分号这行:
window.location = "test.html"
答
这个问题问得不久前发布,但我想指出一些事情。 FB.login
函数打开一个弹出对话框询问用户是否想使用Facebook登录到您的应用程序。通常建议在单击按钮后运行它,因为大多数浏览器会在加载页面时阻止弹出对话框。如果用户之前已授权您的应用程序,那么弹出对话框将重定向回您的应用程序并关闭对话框(假设您的应用程序是一个网站)。
如果你打算做的是检查用户是否登录到在页面加载你的应用程序,那么我们建议你改用FB.getLoginStatus
方法,像这样
function checkLoginState() {
FB.getLoginStatus(function(response) {
// Check response.status to see if user is logged in
alert(response.status);
});
}
不,在(大多数)情况下JavaScript中的分号是_optional_,其中在一行代码中只有一个表达式。 – CBroe
是的,你是对的。然而,有些编译器会一直抱怨,直到你修正你的语法。有时它会导致你的代码崩溃。上面的代码在移植到浏览器时工作正常,所以我认为这可能是问题:) 感谢提出问题。 – Maz