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

上記のコードを使用して、ページの壁に Google へのリンクを投稿しようとしています。コードを実行すると、期待どおりの ID 応答が返されます。ただし、有効な ID があるにもかかわらず、ページには何も表示されません。

「リンク」を削除して再試行すると、別の ID が取得され、投稿が自分のページに表示されます。

私は何か間違ったことをしていますか?

「リンク」値によって 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」変数を次のように変更しました。

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

投稿が「公開」され、まったく新しい URL を使用したにもかかわらず、まだ表示されません。

これは Facebook のバグでしょうか?

4

2 に答える 2

0

「リンク」値によって ID が返されるのに、投稿が表示されないのはなぜですか?

これは通常、同じリンクが同じユーザーによって再度投稿された場​​合に発生します (これらの 2 つの投稿の間に一定の時間があるだけです)。

于 2013-01-08T11:30:55.270 に答える
0

コードをいじった後、これを修正する方法を見つけました。デバッガーツールは有効であり、適切なアクセス許可を持っていると言っていましたが、使用していたアクセストークンが間違っていたことが判明しました。

ページ情報を返すアクセス トークンと、まったく異なるアクセス トークンを使用して、Graph API、特に /me/accounts ビットにクエリを実行する必要がありました。問題のこのアクセス トークンには有効期限がなく (この機能はもうないと思っていました??)、コードに挿入した後、すべてのユーザーに対して投稿が適切に表示されるようになりました。

これらの手順はいずれも Facebook のドキュメントのどこにもありませんでした。

于 2013-01-08T14:06:05.233 に答える