【问题标题】:Facebook API (Via PHP): Post to Feed?Facebook API(通过 PHP):发布到 Feed?
【发布时间】:2011-05-19 16:04:10
【问题描述】:

我已经掌握了基本概念(我认为),但似乎无法使用 Facbook 提供的 PHP 类成功发布任何内容。鉴于这个例子,任何人都可以看到任何可能是问题的地方吗?

// Initialize Facebook API
$fb = new Facebook(array(
    'appId' => FACEBOOK_APP_ID,
    'secret' => FACEBOOK_SECRET,
    'cookie' => true
));

if($fb->getSession()) {
    $res = $fb->api('/me/feed/', 'post', array(
        'message' => 'test message',
        'description' => 'testing'
    ));
}

var_dump($res);

当我输出 $res 的内容时,我得到了一个令人脸红的 NULL。有任何想法吗?如果以上看起来正确,任何人都可以提出一些我可能会尝试调试的东西吗?

【问题讨论】:

  • 检查if构造之间的代码块是否真的在运行,意思是:$fb->getSession()是真的吗?
  • 用于调试:在两行之间放置随机的echos。例如。 echo 'Debug 1'; 在您的 if() 中创建 $fbecho 'Debug 2'; 之后。这样你就可以准确地看到哪一行代码有问题。 (我不确定echo 在 Facebook 环境中会做什么。)

标签: php facebook facebook-graph-api facebook-php-sdk


【解决方案1】:

在您的应用程序中,当您检查用户是否登录 Facebook 时,请确保您确认您的应用程序请求了发布到用户墙上的“特殊权限”。您可以通过如下方式修改代码来做到这一点:

$url = $this->facebook->getLoginUrl(array('canvas' => 1, 'fbconnect' => 0, 'req_perms' => 'user_status,publish_stream'));

注意 req_perms 键被设置为一个值列表,包括“publish_stream”。如果您没有此权限,则提要调用将失败。

无论这是否真的是问题所在,您都可以使用 try-catch 块包装您的 Facebook 请求,以在遇到错误时捕获 FacebookApiException 类型的异常以获取更多信息。例如:

        try {
            $uid = $this->facebook->getUser();
            $me = $this->facebook->api('/me');
        } catch (FacebookApiException $e) {
            print_r($e);
        }

【讨论】:

  • 这正是我遇到的问题。我知道我必须请求特定的权限,但文档(一如既往)已经过时,只引用了旧的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-18
相关资源
最近更新 更多