FB 共享对话框在某些设备上不起作用
FB Share dialog does not function on some devices
我有一个 Phone Gap Android 应用程序,它使用 Facebook JS SDK 创建 Facebook 共享对话框。我在 3 台设备上进行了测试。它在一台设备上运行良好,但在另外两台设备上没有任何结果。当我按下分享按钮时,它什么也没做。
我能够确定无法工作的设备上的 FB.getLoginStatus returns "unknown"。但是,我通过应用程序内的登录对话框登录到 FB。工作装置正确 returns "connected".
此外,“赞”和“评论”功能在所有设备上都能正常工作。
设备工作正常
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 读到,在浏览器中它与第 3 方 cookie 相关,但是当这是一个 Android 应用程序时怎么会这样。当我通过应用程序的身份验证时,状态是 "connected",但是当我分享时,状态变成 "unknown"。
想出我自己的问题:)。事实证明,我需要将 "true" 参数添加到 FB.getLoginStatus() 以强制往返 FB 服务器并检索正确的状态。老实说,我不知道为什么会这样,因为应该缓存状态(如果有人知道,请分享)。也许更好的解决方案是在 FB.init 调用中设置 status:true 然后订阅 auth.statusChange (虽然还没有测试过。
我有一个 Phone Gap Android 应用程序,它使用 Facebook JS SDK 创建 Facebook 共享对话框。我在 3 台设备上进行了测试。它在一台设备上运行良好,但在另外两台设备上没有任何结果。当我按下分享按钮时,它什么也没做。
我能够确定无法工作的设备上的 FB.getLoginStatus returns "unknown"。但是,我通过应用程序内的登录对话框登录到 FB。工作装置正确 returns "connected".
此外,“赞”和“评论”功能在所有设备上都能正常工作。
设备工作正常
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 读到,在浏览器中它与第 3 方 cookie 相关,但是当这是一个 Android 应用程序时怎么会这样。当我通过应用程序的身份验证时,状态是 "connected",但是当我分享时,状态变成 "unknown"。
想出我自己的问题:)。事实证明,我需要将 "true" 参数添加到 FB.getLoginStatus() 以强制往返 FB 服务器并检索正确的状态。老实说,我不知道为什么会这样,因为应该缓存状态(如果有人知道,请分享)。也许更好的解决方案是在 FB.init 调用中设置 status:true 然后订阅 auth.statusChange (虽然还没有测试过。