0

昨天我更改了应用程序设置并启用了“新数据权限”和“新 SDK”。

之后,向用户墙发布消息的功能停止工作。在我的网站上,用户使用 facebook API (Graph) 登录并能够在他们的墙上发布消息。

这是我运行良好的旧代码:

功能publish_with_permission(权限,action_links,附件){
  FB.ensureInit(函数(){
    FB.Connect.requireSession(function(){
        //检查用户是否已授予此权限
        FB.Facebook.apiClient.users_hasAppPermission(权限,
        功能(结果){
            // 提示离线权限
            如果(结果 == 0){
                // 显示 facebook 权限对话框
                FB.Connect.showPermissionDialog(权限,
                函数(结果){
                    如果(!结果){
                       FB.Connect.streamPublish('', attachment, action_links, null, "发布这个:", jscallback);
                    } 别的 {
                    // 授予权限,发布时不使用 facebook 对话框
                       FB.Connect.forceSessionRefresh(function() {
                       FB.Connect.streamPublish('', attachment, action_links, null, "发布这个:", jscallback,true);
                    });
                }
            },真,空);
        } 别的 {
            // 权限已经授予,突然发布
            // 没有 facebook 对话框
            FB.Connect.streamPublish('', attachment, action_links, null, "发布这个:", jscallback,true);
            }
        });
    });
});
}

该功能只是挂起,没有任何反应。我在这个论坛上搜索并找到了这个帖子

函数 fb_publish() {
     FB.ui(
       {
         方法:'stream.publish',
         message: '在这里留言。',
         附件: {
           名称:'Nom ici.',
           caption: '这里有标题。',
           描述: (
             '这里的描述'
           ),
           href: '这里的网址'
         },
         动作链接:[
           { 文本:'代码',href:'此处的操作网址'}
         ],
         user_prompt_message: '这里是个人信息'
       },
       功能(响应){
         if (response && response.post_id) {
           alert('帖子已发布。');
         } 别的 {
           alert('帖子未发布。');
         }
       }
     );  
  }

这个可行,但有两个问题 1) 即使用户第一次使用图形 API 登录并且他们已授予扩展权限以发布到他们的墙,此方法每次都会询问用户是否允许 - 上一个一个没有这样做。2)这种方法还允许用户添加他们的评论——我也不想要这个。

我想无缝地发布到墙上,而无需再次明确要求他们之前已经授予的许可。

我正在使用 PHP - 任何提示将不胜感激谢谢

4

3 回答 3

0

我想这就是你要找的。

预先获取权限。然后使用 Graph API 而不是 Javascript SDK 发布到流。(这在发布时根本不会涉及用户,并且会在您的 php 代码中的服务器端发生)

于 2010-06-30T19:19:48.223 回答
0

我想不出使用 Javascript 的方法 - 所以我改用 php

尝试
{
   $statusUpdate = $facebook->api('/me/feed', 'post', array('message'=> '示例状态消息', 'cb' => ''));
}
捕获(FacebookApiException $e)
{

}


希望它可以帮助某人

于 2010-07-01T03:39:44.233 回答
0

试试这个代码贴在墙上

FB.ui(
            {
                method: 'feed',
                name: 'NAME',
                link: 'LINK OF THE WEBSITE OR PAGE',
                picture: 'IMAGE_URL IF YOU NEED IT',
                caption: 'Reference Documentation',
                description: "DESCRIPTION"
            },
            function(response) {
                if (response && response.post_id) {
                    alert('Post was published.');

                } else {
                    alert('Post was not published.');
                }
            }
        );

此代码适用于我的应用程序。希望它也能解决你的问题。

于 2011-12-06T11:19:47.990 回答