Facebook 页面 - 发布到用户墙(在用户喜欢该页面后)

Posted

技术标签:

【中文标题】Facebook 页面 - 发布到用户墙(在用户喜欢该页面后)【英文标题】:Facebook page - post to users wall(after the user has liked the page) 【发布时间】:2013-01-23 22:31:20 【问题描述】:

我希望它没有那么复杂,但由于 Facebook 已经对其 API 进行了很多更改(关于权限等),我发现许多过时的信息并没有真正帮助我。 情况是:

    我有一个带有 Page Tab 的 Facebook 页面 我有一个与该页面相关联的 Facebook 应用程序(通过选项卡)。 我自己的 WebApp 通过 Facebook php-SDK 将帖子发布到页面的墙上,每个用户都可以在流中看到新闻。

问题:我如何通过该应用发布到用户时间轴?

到目前为止我的代码(发布到页面的墙上)

require 'facebook.php';
$facebook = new Facebook(array(
    'appId'  => 'xxxxxxxxxxxxxx',
    'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxx',
));
$loginUrl = $facebook->getLoginUrl();
$user = $facebook->getUser();

$page_id = 'xxxxxxxxxxxxxxxxxxxx';
$page_info = $facebook->api("/$page_id?fields=access_token");
if( !empty($page_info['access_token']) ) 
    $args = array(
        'access_token'  => $page_info['access_token'],
        'message'       => "Neuer Test!"
    );
    $post_id = $facebook->api("/$page_id/feed","post",$args);
 else 
    $permissions = $facebook->api("/me/permissions");
    if( !array_key_exists('publish_stream', $permissions['data'][0]) || 
        !array_key_exists('manage_pages', $permissions['data'][0])) 
        header( "Location: " . $facebook->getLoginUrl(array("scope" => "publish_stream, manage_pages")) );
    


这工作正常,但该消息在喜欢该页面的用户的时间轴中不可用,仅在他们自己的流中可用。是否可以发布到他们的时间线?

【问题讨论】:

要求用户登录到您的应用程序并确保您具有 publish_stream 权限,一旦您获得权限并且用户登录。您可以通过向“/”发出 POST 请求来发布到他们的墙上me/feed" 以及所需的参数(检查文档)。但我认为 FB 不允许这样做(用户应该知道您的应用程序将发布,否则您可能会破坏 FB 的平台 TOS)。您可能想在实施诸如 FB 可能会限制您的应用的发布权限之类的事情之前检查他们的 TOS。 【参考方案1】:

不知道你是否还需要帮助。但以防万一,这段代码对我有用。它假设您有一个登录用户。并将其发布到用户的时间线。这段代码没有得到我认为的许可,因为 Facebook 有平台 TOS,所以你需要继续努力。试试这个:

     require_once('libs/facebook.php');

    // init new facebook class instance with app info (taken from the DB)
    $facebook = new Facebook(array(
        'appId' => 'your app id here',
        'secret' => 'your app secret here'
    ));



    $fb_user_id = $facebook->getUser();
    $location = "". $facebook->getLoginUrl(array('scope' => 'publish_stream'));

    if ($fb_user_id) 
        try 
            $fb_user_profile = $facebook->api('/me');   

         catch (FacebookApiException $e) 
            $fb_user_id = NULL;

            print '<script language="javascript" type="text/javascript"> top.location.href="'. $location .'"; </script>';
            die();
        
     else 

        print '<script language="javascript" type="text/javascript"> top.location.href="'. $location .'"; </script>';
        die();
    


    $ret_obj = $facebook->api('/me/feed', 'POST',
                            array(
                            'link' => 'www.google.com',
                            'message' => 'Google me!'
                                             ));

【讨论】:

在您上面的代码中,即使用户(不是管理员)喜欢该页面,它也会发布吗?我已经用我设置为用户的其他帐户尝试过,但它没有发布。它仅在管理员使用该页面时发布。

以上是关于Facebook 页面 - 发布到用户墙(在用户喜欢该页面后)的主要内容,如果未能解决你的问题,请参考以下文章

通过图形 API 检索 facebook 用户墙帖子

Facebook php sdk 发布到用户墙向用户显示用户

如何将对象发布到 facebook 用户墙?

如何在没有用户修改消息的情况下从 iOS 应用程序发布到 Facebook 墙

如何从 android 应用程序发布到用户的 facebook 墙

从 iOS 应用程序链接到用户的 Facebook 墙