2013-01-08 95 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被返回,但是沒有帖子被顯示?

如果同一用戶再次發佈相同的鏈接(這兩個帖子之間只有一定的時間),通常會發生這種情況。

相關問題