FB Share对话框在某些设备上不起作用

时间:2015-09-25 08:58:11

标签: android facebook-graph-api facebook-javascript-sdk phonegap-build

我有一个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应用程序时,这怎么可能。当我在应用程序中进行身份验证时,状态为“已连接”,但在我分享时,状态变为“未知”。

1 个答案:

答案 0 :(得分:0)

想出我自己的问题:)。事实证明,我需要添加" true" FB.getLoginStatus()的参数强制往返于FB服务器并检索正确的状态。说实话,我不知道为什么会这样,因为状态应该被缓存(如果有人知道,请分享)。也许更好的解决方案是在FB.init调用中设置status:true然后订阅auth.statusChange(尽管还没有测试过。