1

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

我想做的事

当我在我的网站上添加文章时,我想在 Twitter 和 Facebook 上发布更新。它适用于 Twitter,但我对 Facebook 有疑问。

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

我的问题

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

这是我的简单文本代码(我在上面请求了 accesss_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 没有很好的文档记录,但我到处搜索不问你这个问题.. 但我没有找到任何解决方案。

非常感谢你帮助我。

本杰明

4

3 回答 3

1

希望你有以下权限(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'));
            }
            ?>
于 2012-06-10T19:48:56.783 回答
0

您需要og:tags在您的页面上实现一些 Open Graph,以便 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 调试器来测试您的工作。它会告诉您是否存在问题,确切的问题以及如何解决这些问题。

于 2012-06-10T19:38:06.863 回答
0

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

祝你好运!

于 2012-06-10T20:10:28.103 回答