自动将网站的新闻帖子(发布)分享到特定的Facebook页面

时间:2014-09-18 11:11:16

标签: php facebook facebook-php-sdk

我建立了一个管理界面,管理员用户可以在其中创建简短的新闻更新帖子。我创建了一个Facebook页面,当管理员保存帖子时,也应该发布这些新闻帖子。发布的人员已成为特定Facebook页面的管理员。

编辑:我已经运行了以下代码,我当前的问题是发现Facebook返回NULL会话的错误,因为它不会触发异常也不会导致错误消息。

这是我开始的地方(旧信息):

我已按照本指南http://www.pontikis.net/blog/auto_post_on_facebook_with_php 我坚持两点:创建应用程序步骤3(发布所有可能的设置将其从不再存在的沙箱模式中取出,但我没有找到任何Canvas URL。我已将Canvas URL设置为index.php我将在示例中插入代码)。 另一点是Facebook Access Token第2步。我正在粘贴示例URL,但是我没有获得$ GET数组,而是从Facebook获得了一个对话框,我跟着但似乎Facebook认为我正在创建他们的appstore的应用程序,在允许我的两个权限之前它“需要截图”。好吧,在Facebook工作人员“提交审核”之前我需要权限,所以有些事情是严重错误的。

对我而言,由于我的网络管理员将被告知要登录Facebook,我正在寻找替代方式来做同样的事情。是否有一个在线服务,在httppost URL中加上标题和文本并发布它,可能是他们已经创建的Facebook应用程序?据我所知,Facebook可能会使用带有这些参数的URL(或类似按钮的Javascript片段),但我还没有在我的搜索中遇到它。

或者,您可以帮助指出该指南中的错误。 编辑:或此代码有什么问题。 $ session为NULL,没有异常被触发。我的应用已设置,我从Graph API控制台获得了正确的id等值,并且我已登录Facebook。

session_start();
require_once 'autoload.php';

use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\Entities\AccessToken;
use Facebook\HttpClients\FacebookCurlHttpClient;
use Facebook\HttpClients\FacebookHttpable;
use Facebook\FacebookCanvasLoginHelper;

// init app with app id and secret
FacebookSession::setDefaultApplication( 'myappid','mysecret' );

$helper = new FacebookCanvasLoginHelper();
try {
    $session = $helper->getSession();
} catch(FacebookRequestException $e) {
    // When Facebook returns an error
    echo "Exception occured, code: " . $e->getCode();
    echo " with message: " . $e->getMessage();
} catch(\Exception $ex) {
    // When validation fails or other local issues
}

if ($session) {
    $access_token = "myaccesstoken";
    $page_id="mypageid";
    // post to page
    $page_post = (new FacebookRequest( $session, 'POST', '/'. $page_id .'/feed', array(
        'access_token' => $access_token,
        'name' => 'AVIA',
        'link' => 'http://avia.se',
        'caption' => 'Caption blah blah...',
        'message' => 'Message!',
      ) ))->execute()->getGraphObject()->asArray();

} else {
    die("NO SESSION!");
}

我只是不明白为什么在我登录时无法通过单行播放Facebook会话。

0 个答案:

没有答案