发布未显示的页面的链接?

时间:2013-01-08 11:10:45

标签: php facebook facebook-php-sdk facebook-page

<?php
$appId  =   'XXXXX';
$pageId =   'XXXXX';
$secret =   'XXXXX';
$token  =   'XXXXX';

$data   =   array(
    'access_token'  => $token,
    'description'   => 'test_description',
    'link'          => 'http://www.google.co.uk',
    'message'       => 'test_message',
    'name'          => 'test_name'
);

try
{
    require_once 'facebook/facebook.php';

    $sdk    =   new Facebook(
        array(
             'appId'    => $appId,
             'secret'   => $secret,
             'cookie'   => true
        )
    );

    $post   =   $sdk->api('/'.$pageId.'/feed', 'POST', $data);

    print_r($post);
}
catch (FacebookApiException $e)
{
    echo $e;
}
?>

使用上面的代码我试图在我的页面墙上发布一个指向Google的链接。当我运行代码时,我得到一个ID响应,这是我所期望的。但是,尽管有一个有效的ID,页面上仍然没有显示任何内容。

如果我删除“链接”并再试一次,我会收到另一个ID,并且该帖子会在我的页面上显示。

我做错了吗?

为什么“link”值会导致返回ID但没有显示帖子?


这是Facebook看到的(通过Graph API资源管理器查询):

{
  "id": "484729401573953",
  "created_time": "2013-01-08T12:03:27+0000",
  "caption": "www.readesresidential.com",
  "description": "test_description",
  "from": {
    "name": "David Reade",
    "id": "100003544363105"
  },
  "icon": "http://static.ak.fbcdn.net/rsrc.php/v2/yD/r/aS8ecmYRys0.gif",
  "link": "http://www.readesresidential.com/brookside-crescent-northop-hall-ch7-6hw-ps03009/",
  "message": "test_message",
  "name": "test_name",
  "picture": "http://external.ak.fbcdn.net/safe_image.php?d=AQC7MpbP6aNe2CVP&w=90&h=90&url=http%3A%2F%2Fwww.readesresidential.com%2Fframework%2Fstatic-487d%2F2%2Fimg%2Fv3%2Ffacebook.png",
  "privacy": {
    "description": "Friends",
    "value": "ALL_FRIENDS",
    "allow": "",
    "deny": "",
    "networks": "",
    "friends": ""
  }
}

我可以看到它说“ALL_FRIENDS” - 这可能是导致帖子无法显示的原因吗?你不能成为一个页面的朋友吗?


我现在已将“data”变量修改为以下内容:

$data   =   array(
    'access_token'  => $token,
    'description'   => 'test_description',
    'link'          => 'http://www.readesresidential.com/go/ps02618',
    'message'       => 'test_message',
    'name'          => 'test_name',
    'privacy'       => array(
        'value'   => 'EVERYONE'
    )
);

Graph API资源管理器的响应是:

{
  "id": "454654274601000",
  "created_time": "2013-01-08T12:14:52+0000",
  "caption": "www.readesresidential.com",
  "description": "test_description",
  "from": {
    "name": "David Reade",
    "id": "100003544363105"
  },
  "icon": "http://static.ak.fbcdn.net/rsrc.php/v2/yD/r/aS8ecmYRys0.gif",
  "link": "http://www.readesresidential.com/church-street-tarvin-ch3-8eb-ps02618/",
  "message": "test_message",
  "name": "test_name",
  "picture": "http://external.ak.fbcdn.net/safe_image.php?d=AQC7MpbP6aNe2CVP&w=90&h=90&url=http%3A%2F%2Fwww.readesresidential.com%2Fframework%2Fstatic-487d%2F2%2Fimg%2Fv3%2Ffacebook.png",
  "privacy": {
    "description": "Public",
    "value": "EVERYONE",
    "allow": "",
    "deny": "",
    "networks": "",
    "friends": ""
  }
}

即使帖子现在是“公开”的,我使用了一个全新的网址,但它仍未显示。

这可能是Facebook的错误吗?

2 个答案:

答案 0 :(得分:0)

  

为什么“link”值会导致返回ID但没有显示帖子?

如果相同的用户再次发布相同的链接(这两个帖子之间只有一定的时间),通常会发生这种情况。

答案 1 :(得分:0)

在摆弄代码之后,我发现了如何解决这个问题。原来我使用的访问令牌不正确,即使调试工具说它有效且具有适当的权限。

我不得不使用返回页面信息的访问令牌来查询Graph API,特别是/ me / accounts位,而且还有一个完全不同的访问令牌。有问题的访问令牌没有到期时间(我认为这个功能不再是??),并且在将其插入我的代码之后,帖子现在可以正确显示给所有用户。

这些步骤都不在Facebook文档的任何地方,如果它们是,那么它们很难找到。