2012-03-31 7 views
0

Я создаю приложение, которое отправляет информацию в facebook, когда пользователь загружает определенный музыкальный альбом. Я правильно разбираю информацию. Поэтому, если пользователь нажимает на загрузку для альбома 1, он вытаскивает информацию и отправляется на открытый график и появляется на facebook, однако, когда я нажимаю на следующую кнопку альбома, вместо разбора информации для альбома 2, он публикует информация для альбома 1 снова. Я пробовал fbrefresh=CAN_BE_ANYTHING, но ничего не работает. Кто-нибудь имеет представление об этом?Facebook Open Graph Cache Issue

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

Вы не кодируете URL-адрес целевого URL при отправке запроса API-интерфейсам Facebook. Все, что после второго ? игнорируется. Вы должны сделать следующее:

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 не различает эти две страницы, потому что единственная разница - это строка запроса. Можете ли вы сделать URL-адреса более уникальными с помощью mod_rewrite (например,/альбом/розовое-скольжение).

Кроме того, вам нужно использовать параметр fbrefresh = CAN_BE_ANYTHING при отправке URL-адреса в отладчике объекта - вам не нужно помещать его в свойство og: url на странице альбома.