2012-03-31 15 views
0

ユーザーが特定の音楽アルバムをダウンロードしたときに、Facebookに情報を投稿するアプリケーションを作成しています。私は正しく情報を解析している。したがって、ユーザーがアルバム1のダウンロードをクリックすると、情報がプルグラフに表示され、Facebookに表示されますが、次のアルバムボタンをクリックすると、アルバム2の情報を解析するのではなく、再度アルバム1の情報私はfbrefresh=CAN_BE_ANYTHINGを試しましたが、何も動作していないようです。誰かがこれに洞察力を持っていますか?以下はFacebook Open Graph Cacheの問題

Album 1 Meta Information parse.php?album=The%2520Pink%2520Slip

Album 2 Meta Information parse.php?album=The%2520Sexy%2520Single

私が使用していたコードです:

<script type="text/javascript"> 
function postAlbum(album) { 
    FB.api('/me/skibsthekid:listen_to?album=http://www.skibsthekid.com/parse.php?album=' + album, 'post', 
    function(response) { 
     if (!response) { 
      alert('Error Occurred I got no response with ' + $pageURL); 
     } else if (response.error) { 
      alert('Error Occurred '+ response.error); 
     } else { 
      alert('Post was successful! Action ID: ' + album); 
     } 
    }); 
} 

Parse.php

<?php 
    $title = $_GET['album']; 
    foreach(glob('files/'. $title .'/*.jpg') as $art) { 
     $art = str_replace(" ", "%20", $art); 
     $image = 'http://skibsthekid.com/' . $art; 
    } 
?> 

<meta property="fb:app_id" content="185324271585974" /> 
<meta property="og:type" content="music.album" /> 
<meta property="og:title" content="<?php echo $title; ?>" /> 
<meta property="og:image" content="<?php echo $image; ?>" /> 
<meta property="og:url" content="http://www.skibsthekid.com/parse.php?album=<?php echo urlencode($title); ?>&fbrefresh=CAN_BE_ANYTHING" /> 

答えて

1

FacebookのAPIにリクエストを投稿すると、ターゲットURLをエンコードしているわけではありません。 2nd ?の後のものは無視されます。代わりにする必要があります:

var album_url = "http://www.skibsthekid.com/parse.php?album=" + album; 
FB.api('/me/skibsthekid:listen_to?album='+encodeURIComponent(album_url), 'post',... 
+0

魅力のように動作します。ありがとう! –

1

デバッガに各アルバムが表示されるため、一時的なキャッシュの問題になることがあります。もしそうでなければ、速い(しかし起こりそうもない)推測はFacebookがこれら2つのページを区別しないということは、唯一の違いはクエリ文字列だからです。 mod_rewrite(例:/ album/the-pink-slip)を使用すると、URLをよりユニークにできますか?

また、オブジェクトデバッガでURLを送信するときは、fbrefresh = CAN_BE_ANYTHINGパラメータを使用するだけで済みます。アルバムページのog:urlプロパティに配置する必要はありません。

関連する問題