Facebook PHP SDK - 发布到Facebook页面时出错,但发布了帖子

时间:2014-08-25 09:44:01

标签: php facebook-php-sdk

我不知道为什么但是当我试图发布到我创建的Facebook页面时出现以下错误:

Fatal error: Uncaught exception 'Facebook\FacebookAuthorizationException' with message 'Unsupported post request.

这是我目前拥有的代码:

<?php
session_start();

require 'vendor/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\GraphUser;


FacebookSession::setDefaultApplication('my-app-id', 'my-app-secret');

$session = new FacebookSession('my-access-token');

if($session){

    $request = new FacebookRequest($session, 'GET', '/me/accounts?fields=name,access_token,perms');
    $pageList = $request->execute()->getGraphObject()->asArray();
    $token = $pageList['data'][0]->access_token;

    $request2 = new FacebookRequest(
        $session,
        'POST',
        '/my-page-id/feed',
        array (
          'access_token' => $token,
          'name' => 'MySQL: Why My?',
          'caption' => 'MySQL: Why My?',
          'link' => 'http://www.vertabelo.com/blog/mysql-history',
          'message' => 'MySQL: Why My?',
        )
    );

    $response2 = $request2->execute();
    print_r($response2);

}

当我检查时,会返回错误但邮件实际上是在Facebook页面中发布的。我在这里做错了吗?

我尝试的另一个替代方法是从另一个页面加载获取页面访问令牌,然后在new FacebookSession调用而不是我的配置文件的访问令牌上设置它。然后我省略了创建新帖子的请求中的access_token。它也会返回错误,但也会在页面上创建帖子。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

这与POST link字段到/{page-id}/feed端点的{{1}}具体相关。

当您的应用处于开发模式时,会返回此错误。如果您使应用程序生效,它应该可以正常工作。

很确定这不是预期的行为,所以我提交了bug report

答案 1 :(得分:0)

当我编写用于开发Facebook APP的代码时,我也看到过类似的错误。

我使用了相同的想法,再次拨打电话获取新的访问令牌。然后使用新创建的令牌进行Graph API调用。这对我有用,而且我的应用程序仍然处于开发模式。

我看到了代码并认为您在Graph API URI中传递参数,这些参数不需要进行调用。不要这样使用

$ request = new FacebookRequest($ session,&#39; GET&#39;,&#39; / me / accounts?fields = name,access_token,perms&#39;);

相反试试这个 $ request = new FacebookRequest($ session,&#39; GET&#39;,/ me / accounts&#39;);

快乐的编码! Atul Jindal