2013-01-08 59 views
0
<?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; 
} 
?> 

使用上面的代码我试图在我的页面墙上发布到谷歌的链接。当我运行代码时,我得到了我期望的ID响应。然而,尽管拥有有效的ID,页面上仍然没有显示出来。发布一个没有显示的页面的链接?

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

难道我做错了什么?

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


这就是Facebook所看到的(通过图形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 = array(
    'access_token' => $token, 
    'description' => 'test_description', 
    'link'   => 'http://www.readesresidential.com/go/ps02618', 
    'message'  => 'test_message', 
    'name'   => 'test_name', 
    'privacy'  => array(
     'value' => 'EVERYONE' 
    ) 
); 

从图形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": "" 
    } 
} 

即使后现“公开“,我已经使用了一个全新的URL,但它仍然没有显示。

这可能是一个Facebook的错误?

+0

尝试使用API​​浏览器发布。并在这里更新你所得到的 –

回答

0

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

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

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

0

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

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

相关问题