【问题标题】:post as page on facebook page wall在 Facebook 页面墙上发布为页面
【发布时间】:2012-06-13 20:43:05
【问题描述】:

我已经阅读了很多关于这个主题的其他主题,但我没有发现任何有用的东西。

我想做的事

当我在我的网站上添加文章时,我想在 Twitter 和 Facebook 上发布更新。它适用于 Twitter,但我在使用 Facebook 时遇到了问题。

我下载了使用 OAuth 的 facebook.php。

我的问题

当我发布一个简单的文本时,它可以正常工作,它会根据需要显示为页面发布的内容。但是,当我想发布带有缩略图、链接、标题和说明的文本时,它会像我的个人帐户在我的页面墙上发布此更新一样发布。

这是我的简单文本代码(我在上面请求了 acces_token):

$post = array('access_token' => $token, 'message' => 'My message');
try{  
$res = $facebook->api('/mypage/feed','POST',$post);  
print_r($res);  

} catch (Exception $e){  

    echo $e->getMessage();  
}

这是错误的代码:

$post = array('access_token' => $token,
                'message' => 'My message',
                'picture' => 'http://www.website.com/picture.jpg',
                'link' => 'http://www.website.com',
                'caption' => 'test caption',
                'description' => 'test description', 
                'from' => array('name' =>'Page name', 'id' => 'page id'), 
                );  


try{  
$res = $facebook->api('/mypage/feed','POST',$post);  
print_r($res);  

} catch (Exception $e){  

    echo $e->getMessage();  
}

Facebook API 没有很好的文档记录,但我到处搜索没有问你这个问题..但我没有找到任何解决方案。

非常感谢你帮助我。

本杰明

【问题讨论】:

    标签: php facebook post


    【解决方案1】:

    这可能不会,但请确保您没有使用解析为内部域名的图片 URL(即通过更新您的本地 hosts 文件)。经过大量测试(尽管它使用 JS 中的 FB.UI 调用)后,我发现如果域名指向内部,即使它也可以在外部使用(这是让我感到震惊的一点),您可能会遇到错误。这似乎只对 Picture 参数很重要。

    祝你好运!

    【讨论】:

      【解决方案2】:

      希望你有以下权限(publis_stream,manage_pages,offline_access)和access_token,试试下面的代码

                      <?php
                  /**
                   * Edit the Page ID you are targeting
                   * And the message for your fans!
                   */
                  $page_id = 'PAGE_ID';
                  $message = "I'm a Page!";
      
      
                  /**
                   * This code is just a snippet of the example.php script
                   * from the PHP-SDK <http://github.com/facebook/php-sdk/blob/master/examples/example.php>
                   */
                  require '../src/facebook.php';
      
                  // Create our Application instance (replace this with your appId and secret).
                  $facebook = new Facebook(array(
                    'appId'  => 'app_id',
                    'secret' => 'app_secret',
                  ));
      
                  // Get User ID
                  // $user supposed to be page admin
                  $user = $facebook->getUser();
      
                  if ($user) {
                    try {
                      $page_info = $facebook->api("/$page_id?fields=access_token");
                      if( !empty($page_info['access_token']) ) {
                          $args = array(
                              'access_token'  => $page_info['access_token'],
                              'message'       => $message ,
                              'name'         => 'My Wall Post Header/Title Here',
                              'caption'      => 'Small caption here',
                              'link'         => 'http://www.mywebsite.org',
                              'description'  => 'Wall Post Details Here',
                              'picture'      => "http://www.mywebsite.org/images/logo.gif",           
                          );
                          $post_id = $facebook->api("/$page_id/feed","post",$args);
                      }
                    } catch (FacebookApiException $e) {
                      error_log($e);
                      $user = null;
                    }
                  }
      
                  // Login or logout url will be needed depending on current user state.
                  if ($user) {
                    $logoutUrl = $facebook->getLogoutUrl();
                  } else {
                    $loginUrl = $facebook->getLoginUrl(array('scope'=>'manage_pages,publish_stream'));
                  }
                  ?>
      

      【讨论】:

      • 它的工作,非常感谢,我会分析我们的代码之间的差异,找出我错了!再次感谢编辑:当我的代码单独在一个页面中时它可以工作,但是当我将所有代码放在一个函数中并调用它时,它就不再工作了。无论如何,我相信我会解决这个问题的!
      • 编辑:它只工作了 1 次,但没有做任何事情,因为没有更改代码 hmhm ..
      【解决方案3】:

      您需要在您的页面上实现一些 Open Graph og:tags,以便 Facebook 知道要采用哪些图像、描述和标题。

      https://developers.facebook.com/docs/opengraphprotocol/

      它们看起来像这样 -

      <meta property="og:title" content="The Rock"/>
      <meta property="og:type" content="movie"/>
      <meta property="og:url" content="http://www.imdb.com/title/tt0117500/"/>
      <meta property="og:image" content="http://ia.media-imdb.com/rock.jpg"/>
      <meta property="og:site_name" content="IMDb"/>
      <meta property="fb:admins" content="USER_ID"/>
      <meta property="og:description"
            content="A group of U.S. Marines, under command of
                     a renegade general, take over Alcatraz and
                     threaten San Francisco Bay with biological
                     weapons."/>
      

      实现所需的元标记后,您可以使用方便的花花公子Facebook URL Debugger 测试您的工作。它会告诉您是否存在问题,确切的问题以及如何解决这些问题。

      【讨论】:

      • 您好,感谢您的回答。是的,我的页面上有打开的图表,但是当消息只是 url 时,它没有解析页面来获取 og 标记。当它使用我提供的选项在我的页面墙上发布时,一切正常。
      • 是的,不是数据问题,而是php sdk问题!
      • 这个问题不在于 SDK,而在于你如何实现它:)
      • 好的,所以我在 Facebook 调试器上测试了我想在 Facebook 上自动发布的页面,并且.. 出现了奇怪的错误。它告诉我,我的 og 标签在正文中,但在我的代码中,当我查看页面源时,它在头部。但是在 Facebook 抓取的页面中,它是在

        内的正文中。这怎么会干扰 FB SDK?
      猜你喜欢
      • 1970-01-01
      • 2011-08-11
      • 1970-01-01
      • 1970-01-01
      • 2018-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-25
      相关资源
      最近更新 更多