2

有一个类似的问题:Asking for permission using new PHP SDK (3.XX) but doesn't solve my problem。

我的应用程序是一个 Facebook 标签应用程序(论坛),它授权 FB 用户能够在论坛中发帖。到目前为止,一切都很好。授权工作正常。现在我想扩展一点我的应用程序,以便订阅线程的用户能够在他们的时间轴上发布该应用程序。

我正在尝试的测试是:

    require_once('./includes/facebook.php');
$facebook = new Facebook(array(
    'appId'  => $CFG["appid"],
    'secret' => $CFG["appsecret"],
    'oauth' => true,
    'scope' => 'status_update,publish_stream,publish_actions',
    'cookie' => true
));
$facebookid = '';
$facebookid = $facebook->getUser();
if (!empty($facebookid))
{
    $facebook_info = array();
    $facebook_info=$facebook->api('/me');
    $facebook->api('/me/feed', 'POST',
                                array(
                                  'link' => 'www.example.com',
                                  'message' => 'Posting with the PHP SDK!'
                             ));

}

但这会产生错误:致命错误:未捕获的 OAuthException:(#200)用户尚未授权应用程序执行 /home/facebook/public_html/demo/forum/includes/base_facebook.php 第 1271 行中抛出的此操作

知道我做错了什么吗?请注意,我尝试在应用程序设置 (developers.facebook.com) 中添加相同的权限,但我还是没有运气。当然我错过了一些东西,但这是什么?

谢谢

4

1 回答 1

0

base_facebook.php 以及您使用的代码让我认为您正在使用 Facebook PHP-SDK 库。publish_streampublish_actions现在是一样的,所以你可以跳过它。status_update我从来没有见过。要发布状态,您只需要publish_actions. 确保您使用的是更新的库(他们会不时更新),可以在 github 上下载。那个库给了我一个类似的错误,我想不出原因,所以我编写了自己的身份验证过程,这并不复杂。现在,我想到的就是你必须检查你要求的权限,检查用户是否授权了应用程序(那个库用getUser();),并检查您是否拥有最新版本的库。如果一切都出错了,请尝试使用简单的 auth url 并通过打印从 API 获得的内容进行调试。此外,请尝试确保回调 url 始终相同。我希望这有帮助...

于 2013-10-09T10:23:38.517 回答