Php 无法以管理员身份将条目发布到facebook fan page wall

Php 无法以管理员身份将条目发布到facebook fan page wall,php,facebook,facebook-graph-api,Php,Facebook,Facebook Graph Api,我试图以管理员的身份发布到Facebook的粉丝页面,但徒劳。我想把带有图片、链接、描述等的新条目贴在我的粉丝页面的墙上。这是集成到我的自定义cms中的,这样每当我的网站上更新了一个故事,它就会自动在粉丝页面的墙上发布同样的内容。 问题是,每当我发布帖子时,帖子都不会显示为管理员发布的帖子。它显示为其他人在时间线右侧的帖子。 我如何绕过下面的代码,让它以管理员的身份发布在我的粉丝页面上?我已经看了两天了,在网上查了类似的东西,但我似乎还是无法破解它。我们将不胜感激 $page_id = 'xxx

我试图以管理员的身份发布到Facebook的粉丝页面,但徒劳。我想把带有图片、链接、描述等的新条目贴在我的粉丝页面的墙上。这是集成到我的自定义cms中的,这样每当我的网站上更新了一个故事,它就会自动在粉丝页面的墙上发布同样的内容。 问题是,每当我发布帖子时,帖子都不会显示为管理员发布的帖子。它显示为其他人在时间线右侧的帖子。 我如何绕过下面的代码,让它以管理员的身份发布在我的粉丝页面上?我已经看了两天了,在网上查了类似的东西,但我似乎还是无法破解它。我们将不胜感激

$page_id = 'xxxxxxxxxx';
$article_link = "http://xyz.com/articles/headlines/title-one/";

$result = $facebook->api("/me/accounts");
foreach($result["data"] as $page) {
    if($page["id"] == $page_id) {
        $page_access_token = $page["access_token"];
        break;
    }
}   

$og_title = "Sample title";
$og_image = "http://xyz.com/images/articles/919161344090182.jpg";
$msg = "some description of the article";
$feed_array = array(
    'access_token' => "$page_access_token",
    'message' => "$msg",
    'picture' => "$og_image",
    'link' => "$article_link",
    'name' => "$og_title",
    'caption' => "$og_title"
);

try {
    $page_post = $facebook->api("/$page_id/feed","post",$feed_array);
} catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
}

如果您想发布为页面-这意味着该帖子将显示为页面发布了更新

然后您必须使用有效的页面访问令牌。中有关于如何获取此类令牌的信息。看起来您的代码中已经有一个令牌-您可以使用测试它,看看它是否仍然有效

另一件您可能想尝试的事情是,您可以使用PHP SDK的
setAccessToken()
函数,而不是将令牌附加为post数组的参数之一。更多详情请参阅:


最后一点要注意的是,当您指定数组的元素时,除非您想专门添加引号字符,否则不需要将值括在引号中

$feed_array = array(
  'access_token' => $page_access_token,
  'message' => $msg,
  'picture' => $og_image,
  ...
);
如果要向值显式添加引号,则必须执行以下操作-

$feed_array = array(
  'string_value' => '"'.$value.'"',
  ...
);

您应该从
$facebook->api()
错误调用中返回异常。他们扔了吗?如果是,他们传达了什么信息?很抱歉疏忽了。我将插入错误捕捉。我没有得到任何错误。问题是这篇文章看起来不像是由管理员发布的,而是由其他人发布的。我需要它以管理员的身份发布。听起来你的访问令牌不是真正的页面访问令牌(我看到了变量名),或者用于创建令牌的用户不允许在页面上发布。有很多页面,但我不知道是否相关。你的$page\u access\u令牌实际上是页面访问令牌吗?这就是你真正想要的,让文章看起来像是“由”页面本身发布的,或者你说“由管理员”是什么意思。对不起,我的意思是我希望我的CMS发布为页面,而不是管理员。我检查了页面访问令牌,发现它已经过期,所以我从graph api explorer生成了一个新的令牌。即使有了这个新的令牌,更新仍然像以前一样出现(不按页面发布)。我还缺少什么吗?使用正确的令牌将获得您想要的结果。您是如何获得您正在使用的令牌的?你从管理员那里获得了管理页面的权限了吗?我遇到了这个问题。如果我删除了所有其他参数,只留下消息param,它就可以发布了(与页面一样)!但是,当我引入其他参数时,它的发布方式就不同了(作为一个普通用户)!为什么?Lix,我生成了令牌表单graph api explorer。令牌是有效的。我还授予manage_pages权限。令牌是每个应用程序的,您需要应用程序生成令牌。
$feed_array = array(
  'string_value' => '"'.$value.'"',
  ...
);