Posting a link to a page not showing up?

我与影子孤独终老i 提交于 2019-12-12 01:20:04

问题


<?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;
}
?>

Using the code above I am trying to post a link to Google on my page wall. When I run the code, I get an ID response which is what I would expect. However nothing shows up on the page, despite having a valid ID.

If I remove the "link" and try again, I get another ID and the post is visible on my page.

Am I doing something wrong?

Why should the "link" value cause an ID to be returned but no post to be displayed?


This is what Facebook sees (queried via the Graph API explorer):

{
  "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": ""
  }
}

I can see it says "ALL_FRIENDS" - could this be what's causing the post to not be displayed? You can't be friends with a page can you?


I have now modified the "data" variable to the following:

$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'
    )
);

The response from the Graph API explorer is:

{
  "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": ""
  }
}

Even though the post is now "public" and I have used a completely new URL, it's still not showing.

Could this be a Facebook bug?


回答1:


Why should the "link" value cause an ID to be returned but no post to be displayed?

This usually happens if the same link is posted again by the same user (with only a certain amount of time between those two posts).




回答2:


After some fiddling with the code, I found out how to fix this. Turns out the access token I was using was incorrect, even though the debugger tool said it was valid and had the appropriate permissions.

I had to query the Graph API, in particular the /me/accounts bit using the access token which returned the page info but and a completely different access token. This access token in question has no expiration time (I thought this feature was no more??) and after inserting it into my code, the posts now display properly for all users.

None of these steps were in the Facebook documentation anywhere, and if they are then they're extremely hard to find.



来源:https://stackoverflow.com/questions/14213682/posting-a-link-to-a-page-not-showing-up

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!