<?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的错误吗?
答案 0 :(得分:0)
为什么“link”值会导致返回ID但没有显示帖子?
如果相同的用户再次发布相同的链接(这两个帖子之间只有一定的时间),通常会发生这种情况。
答案 1 :(得分:0)
在摆弄代码之后,我发现了如何解决这个问题。原来我使用的访问令牌不正确,即使调试工具说它有效且具有适当的权限。
我不得不使用返回页面信息的访问令牌来查询Graph API,特别是/ me / accounts位,而且还有一个完全不同的访问令牌。有问题的访问令牌没有到期时间(我认为这个功能不再是??),并且在将其插入我的代码之后,帖子现在可以正确显示给所有用户。
这些步骤都不在Facebook文档的任何地方,如果它们是,那么它们很难找到。