一部のユーザーがFacebookに接続し、グラフAPIを使用してページフィードに投稿する小さなPHPアプリケーションを実行しています。ユーザーが自分の投稿が自分のページに表示されないと私に言った今日まで、問題なく動作します。データベースとログファイルを確認したところ、Facebook API からの例外はなく、新しい投稿の ID が返されました。自分のページに同じ画像ファイルを添付してまったく同じ投稿を投稿しようとしましたが、すべてが期待どおりに機能しました.
API 呼び出しを実行する PHP コードは次のとおりです。
$fb = new facebook(array('appId'=>FB_APP_ID, 'secret'=>FB_APP_SECRET, 'cookie'=>true));
try {
if(!empty($post->file)) {
$do = "photos";
$request['fileUpload'] = true;
$request['source'] = "@".realpath("data/srmfiles/{$userIdentity->id}/{$post->file}");
$fb->setFileUploadSupport(true);
}
$postToId = ($do=="photos" && $post->facebook_page->facebookFotoAlbumId)
? $post->facebook_page->facebookFotoAlbumId
: $post->facebook_page->facebookId;
$fb->setAccessToken($post->facebook_page->accessToken);
$response = $fb->api("/{$postToId}/{$do}","POST",$request);
$post->wasSuccessfull = 1;
$post->facebook_id = $response['id'];
}
catch(FacebookApiException $e){
$post->failCount++;
if($post->failCount>=3) {
$post->wasSuccessfull = -1;
}
$handle = fopen("srm-errors-".date("Ymd").".txt","a");
fwrite($handle,date("H:i:s")." - ".$e->getMessage()."\n");
fclose($handle);
}
Facebook API は例外をスローせず、新しい投稿の ID を返しますが、投稿はページに表示されず、ID から直接表示することもできません。