我正在创建一个应用程序,当用户下载特定的音乐专辑时,该应用程序将信息发布到Facebook。我有正确的解析信息。因此,如果用户点击相册1的下载,它将提取信息并提交到打开的图表并显示在Facebook上,但是当我点击下一个相册按钮,而不是解析相册2的信息时,它会发布再次播放专辑1的信息。我试过fbrefresh=CAN_BE_ANYTHING
但似乎没有任何效果。有没有人对此有所了解?
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" />
答案 0 :(得分:1)
调试器显示每个专辑,因此这可能只是一个临时的缓存问题。如果没有,那么快速(但不太可能)的猜测是Facebook没有区分这两个页面,因为唯一的区别是查询字符串。您可以使用mod_rewrite(例如/ album / the-pink-slip)使URL更加独特。
此外,在对象调试器中提交URL时,您只需要使用fbrefresh = CAN_BE_ANYTHING参数 - 您无需将其放在相册页面的og:url属性中。
答案 1 :(得分:1)
当您将请求发布到Facebook的API时,您不是对目标URL进行编码的URL。第二个?
之后的任何内容都被忽略了。你应该这样做:
var album_url = "http://www.skibsthekid.com/parse.php?album=" + album;
FB.api('/me/skibsthekid:listen_to?album='+encodeURIComponent(album_url), 'post',...