Как создать всплывающее окно «поделиться» в приложении Facebook iframe

#php #javascript #facebook #fbml #fbjs

#php #javascript #Facebook #fbml #fbjs

Вопрос:

В настоящее время у меня есть следующий метод, который создает «URL-адрес общего доступа», по сути, код для вставки в onclick = «» внутри приложения.

Проблема в том, что теперь у нас больше не может быть Facebook приложений FBML, только iframe — есть ли библиотека, которую мне теперь нужно включить, чтобы заставить это работать? Или мне следует изменить код, я погуглил, но ответы в целом неубедительны или используются обратные хаки, чтобы заставить его работать.

 public function getShareUrl($title, $url, $caption, $description, $imageSrc, $shareButtonText = 'Share your thoughts!')
{
    $url .= "var attachment = {
                    'name':'$title',
                    'href':'$url',
                    'caption':'$caption',
                    'description':'".$description."',
                    'media':[{
                        'type':'image',
                        'src':'$imageSrc',
                        'href':'$url'
                    }]
                };
                var actionLinks = [{
                    'text':'Join the app now',
                    'href':'$url'
                }];
                Facebook.streamPublish('', attachment, actionLinks, null, '$shareButtonText');
                return false;";
    return $url;
}
  

Спасибо всем! 🙂

Ответ №1:

Чтобы создать всплывающее окно «поделиться» из вашего приложения facebook, вы должны использовать Javascript SDK

вы можете сделать это:

 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
  <head>
<title></title>
</head>
  <body>
  <div id="fb-root"></div>
<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript">
  FB.init({
   appId  : 'yourappid',
   status : true,
   cookie : true,
   xfbml  : true 
  });
</script>
<script type="text/javascript">
  function streamPublish(name, description, hrefTitle, hrefLink, userPrompt, imageSrc, imageUrl) {
      FB.ui({
          method: 'stream.publish',
          message: '',
          attachment: {
              media: [{
                  type: 'image',
                  src: imageSrc,
                  href: imageUrl
              }],
              name: name,
              caption: '',
              description: (description),
              href: hrefLink
          },
          action_links: [{
              text: hrefTitle,
              href: hrefLink
          }],
          user_prompt_message: userPrompt
      }, function (response) {
          // do something when you have posted
      });
  }

  function publishStream() {
      streamPublish("Stream Publish", 'sample publish', 'do something cool', 'http://example.com', "My fb app", 'http://bit.ly/AJTnf', 'http://bit.ly/hifZk');
  }
 </script>
<p>Stream Publish Test</p>
<a href="#" onclick="publishStream(); return false;">Post a story</a>
  </body>
</html>
  

Комментарии:

1. Я не могу дать вам «one up», но я бы дал, если бы моя репутация была достаточно высока. Спасибо! 🙂

2. Джон Эннис, в чем разница между developers.facebook.com/docs/share и ваш метод, описанный выше?