Мне нужно сделать сообщение в Facebook с параметрами. Я использовал решения отсюда: генерировать метатеги Facebook Open Graph динамически и здесь: динамический Facebook og метатеги в WordPress PHP
ЗАКЛЮЧИТЕЛЬНЫЙ РАБОЧИЙ КОД:
<?php $params = array(); if(count($_GET) > 0) { $params = $_GET; } else { $params = $_POST; } // defaults if($params['title'] == "") $params['title'] = "default_title"; if($params['score'] == "") $params['score'] = "1234567"; ?> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US" xmlns:fb="https://www.facebook.com/2008/fbml"> <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# pathoflight: http://ogp.me/ns/fb/pathoflight#"> <meta property="fb:app_id" content="MY_APP_ID" /> <meta property="og:type" content="pathoflight:level" /> <meta property="og:url" content="<?php echo 'https://path-of-light.herokuapp.com'.$_SERVER['REQUEST_URI']; ?>"/> <meta property="og:image" content="http://img.ruphp.com/php/attachment_blank.png" /> <meta property="og:title" content="<?php echo $params['title']; ?>" /> <meta property="pathoflight:score" content="<?php echo $params['score']; ?>" /> </head>
Он отлично работает в браузере и отладчике Facebook, но мои сообщения через API API Facebook всегда приводят к значениям по умолчанию для title
и score
. Как я могу сказать Facebook, чтобы прочитать мои реальные параметры?
Проблема также заключалась в том, что API-интерфейс API Facebook пропускает параметры, если вы делаете такую запись
me/pathoflight:complete?level=https://path-of-light.herokuapp.com/level_new.php?title=my_title&score=223322
Этот подход работает:
me/pathoflight:complete Add a field level https://path-of-light.herokuapp.com/level_new.php?title=my_title&score=223322