0

可能重复:
Facebook Graph Api - 以管理员身份发布到粉丝页面

我写了下面的代码:

$pageId = 'xxx';
$appId = 'xxx';
$secret = 'xxx';
$facebook = new Facebook(array(
    'appId' => $appId,
    'secret' => $secret,
    'cookie' => false
));

$access_token = $facebook->getAccessToken();

$facebook->api("/{$pageId}/feed", "post", array(
    'message' => "First message",
    'name' => "Name for first",
    'access_token' => $access_token
));

但出现以下异常:(#200)用户尚未授权应用程序执行此操作

4

2 回答 2

0

您是否检查过用户是否已登录?很简单,但我在您的代码中看不到它。

您可以首先检查 $facebook->getUser() 是否为 null,如果 null 重定向到 $facebook->getLoginUrl(array('req_perms' => 'user_status'); 并确保添加您可能需要的其他权限。

这个问题非常相似,通读一些答案 - 应该有一个适合你。

于 2013-01-20T11:44:37.370 回答
0

您的代码中需要 *publish_stream* 权限。有可能:

$my_url = "http://apps.facebook.com/siegiusarena";

// 获取用户 ID $user = $facebook->getUser();

如果($用户){

    $message=$application_name." game on facebook. Check it out: http://apps.facebook.com/siegiusarena";
$link = "http://apps.facebook.com/siegiusarena";
$attachment = array('message'=>$message, 'link'=>$link, 'picture'=>'http://www.developas.com/fb/siegiusarena/siegiusarena_256x256.jpg');
$facebook->api("me/feed", 'post', $attachment);

}else{ $code = $_REQUEST["code"];

    if(empty($code)) {
                     $_SESSION['state'] = md5(uniqid(rand(), TRUE)); // CSRF protection
                     $dialog_url = "https://www.facebook.com/dialog/oauth?client_id=" 
   . $appid . "&redirect_uri=" . urlencode($my_url) . "&state="
   . $_SESSION['state'] . "&scope=email,publish_stream";

                    echo("<script> top.location.href='" . $dialog_url . "'</script>");

} }

于 2013-01-20T12:30:02.437 回答