我有一个Phone Gap Android应用程序,它使用Facebook JS SDK创建Facebook共享对话框。我在3台设备上测试过。它在一台设备上完美运行,但其他两台设备没有任何结果。当我按下分享按钮时,它什么也没做。
我能够确定FB.getLoginStatus在无效的设备上返回“unknown”。但是,我通过应用程序内的登录对话框登录到FB。工作设备正确返回“已连接”。
此外,Like和Comment功能在所有设备上都能正常运行。
设备正常运行
Nexus 7 - 5.1.1(fb用户是FB应用程序的管理员)
设备共享对话框:
Galaxy Trend - 4.0.4(fb用户是FB应用程序的管理员或开发人员)
Lenovo Tablet - 4.1.2(fb用户与FB应用无关)
FB应用程序不在沙盒中,它是实时的。
这是我的分享功能。
function sharepost(link,picture,name,description,post_type,page_name){
var description_unes = unescape(description);
FB.getLoginStatus(function(response) {
if (response.status == 'connected') {
var obj = {
method: 'feed',
link: link,
picture: "http://example.com/fb.php?u=hsttps://fbexternal-a.akamaihd.net/safe_image.php?d=AQDQXWajSt1TJxUz&url="+picture, //full_picture
name: name,
description: description_unes
};
FB.ui(
obj,
function(response) {
if (response && !response.error_code) {
alert('Posting completed.');
} else {
alert('Error while posting.');
}
}
);
}
});
}
任何人遇到类似的问题,根据移动设备的行为不同(或者我猜Android SDK版本?)。非常感谢
更新:我在这里阅读FB.getLoginStatus() return "unknown" in Firefox when user is logged在浏览器中它与第三方cookie有关,但是当这是一个Android应用程序时,这怎么可能。当我在应用程序中进行身份验证时,状态为“已连接”,但在我分享时,状态变为“未知”。
答案 0 :(得分:0)
想出我自己的问题:)。事实证明,我需要添加" true" FB.getLoginStatus()的参数强制往返于FB服务器并检索正确的状态。说实话,我不知道为什么会这样,因为状态应该被缓存(如果有人知道,请分享)。也许更好的解决方案是在FB.init调用中设置status:true然后订阅auth.statusChange(尽管还没有测试过。