2010-03-12 19 views
0

我正在尝试将东西发布到某人的墙上。Facebook JS API:如何让FB.Connect.streamPublish使用auto_publish

它的工作原理,但我也试图使用auto_publish功能,所以用户只会得到一个弹出授予publish_stream扩展权限。

所以我设置streamPublishauto_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); 
        } 

       }); 
      } 
     }); 

    }); 
}); 

回答

1

来到这个线程,因为即时通讯具有相同的问题,我解决了(无需使用其他apiClient调用)。

在上面的回答中,您没有错,因为FB没有正确设置autoPublish设置。

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

我的代码之前:

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的方法是,因为有电流错误与图形API的唯一原因,IM,你不能:

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

现在代码发布行动链接。

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

希望这可以帮助别人。

0

我仍然不清楚为什么如预期,这并不工作,但我已经检查了FB JS代码和它的失败设置我的用户设置自动发布正确地在它的userInfo对象中。

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

的问题,从最后一个参数传递的假茎:

所以我已经通过调用stream.publish围绕这个工作。这是auto_publish bool,所以即使将此设置授予的权限设置为false,它也会提示用户是否要发布它。

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

对不起,但粘贴是在我严重篡改代码并在粘贴时忘记了bool的错误值。有一个upvote tho。 – Prody 2010-04-02 14:06:12

相关问题