Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook JS API:如何让FB.Connect.streamPublish使用自动发布_Facebook - Fatal编程技术网

Facebook JS API:如何让FB.Connect.streamPublish使用自动发布

Facebook JS API:如何让FB.Connect.streamPublish使用自动发布,facebook,Facebook,我想把东西发布到某人的墙上 它可以工作,但我也尝试使用自动发布功能,这样用户只会获得一个弹出窗口,授予publish\u流扩展权限 因此,我将streamPublish的auto_publish设置为true,但仍然会出现弹出窗口,询问我是否要发布和/或编辑消息 我做错了什么 以下是我正在运行的: FB.ensureInit(function () { FB.Facebook.get_sessionState().waitUntilReady(function() { F

我想把东西发布到某人的墙上

它可以工作,但我也尝试使用自动发布功能,这样用户只会获得一个弹出窗口,授予
publish\u流
扩展权限

因此,我将
streamPublish
auto_publish
设置为true,但仍然会出现弹出窗口,询问我是否要发布和/或编辑消息

我做错了什么

以下是我正在运行的:

FB.ensureInit(function () {
    FB.Facebook.get_sessionState().waitUntilReady(function() {
        FB.Connect.showPermissionDialog("publish_stream", function(perms) {
            if (perms == "publish_stream") {
                FB.Facebook.apiClient.friends_get(null, function(result) {
                    var markup = "";

                    var targets = result;
                    targets = [testFriendsIDForTesting];

                    var attachment = {
                        name: "Blablabla",
                        href: window.location.href,
                        description: "description",
                        caption: "caption"
                    };

                    var actionLinks = [{
                        text: "View",
                        href: window.location.href
                    }];

                    var num_targets = targets.length;
                    for (var i=0; i<num_targets; i++) {
                        var fId = targets[i];
                        FB.Connect.streamPublish("none", attachment, actionLinks, fId, "none", null, true);
                    }

                });
            }
        });

    });
});
FB.ensureInit(函数(){
FB.Facebook.get_sessionState().waitUntilReady(函数()){
FB.Connect.showPermissionDialog(“发布流”,函数(perms){
if(perms==“发布\u流”){
FB.Facebook.apiClient.friends\u get(null,函数(结果){
var标记=”;
var目标=结果;
目标=[testFriendsIDForTesting];
var附件={
姓名:“布拉布拉布拉”,
href:window.location.href,
description:“description”,
标题:“标题”
};
var actionLinks=[{
文本:“查看”,
href:window.location.href
}];
var num_targets=targets.length;

对于(var i=0;i我仍然不确定这为什么不能按预期工作,但我检查了FB JS代码,它无法在其userInfo对象中正确设置用户自动发布设置

因此,我通过以下方式调用
stream.publish
解决了这个问题:

FB.Facebook.apiClient.callMethod("stream.publish", c, new FB.ImmediateSequencer(function(n,m){

问题源于您传递的最后一个参数为false。这是auto_publish bool,因此即使将此设置授予false的权限,它也会提示用户是否要发布它

// Set auto publish to true
FB.Connect.streamPublish("none", attachment, actionLinks, fId, "none", null, true);

当我遇到同样的问题时遇到了这个线程,我解决了这个问题(无需使用另一个ApicClient调用)

上面的答案是正确的,因为FB没有正确设置自动发布设置

解决方法是在尝试发布之前调用
FB.Connect.forceSessionRefresh

我之前的代码:

function fbPublish() {{
                FB.ensureInit(function() {{
                        FB.Connect.streamPublish('{0}', {1}, {2}, null, 'Anything else you would like to add?', fbPublishCallback, true, null);
                    }});
            }}
立即编码:

function fbPublish() {{
                FB.ensureInit(function() {{
                    FB.Connect.forceSessionRefresh(function() {{
                        FB.Connect.streamPublish('{0}', {1}, {2}, null, 'Anything else you would like to add?', fbPublishCallback, true, null);
                    }});
                }});
            }}
我使用这个“旧”JavaScript方法的唯一原因是Graph API存在一个当前错误,您无法发布操作链接

我不知道他们在Facebook上遇到了什么样的开发者,因为我遇到的问题是不光彩的(这是Graph API不允许操作链接,而不是null导致“应用服务器错误”,等等)


希望这对其他人有所帮助。

很抱歉,这是在我粘贴代码时严重损坏了代码并忘记了错误值的布尔值后进行的粘贴。请向上投票。