FBML Wallpost, нажав на изображение или кнопку - PullRequest
2 голосов
/ 06 февраля 2011

Я создаю одно приложение Facebook с FBML. Что я хочу это: У меня есть несколько изображений, как,

<fb:tag name="img">
<fb:tag-attribute name="src">http://My_Img_Url_1.jpg</fb:tag-attribute>
</fb:tag>
<fb:tag name="img">
<fb:tag-attribute name="src">http://My_Img_Url_2.jpg</fb:tag-attribute>
</fb:tag>

Пока я нажимаю на изображение, оно должно открыть одно всплывающее окно «Опубликовать на стене» или «Опубликовать на стене вашего друга» с соответствующим изображением My_Img_Url_n.jpg.

Я могу использовать кнопку обмена FBML, например:

МЕТОДА 1

<fb:share-button class="meta">
<meta name="title" content="Image_TITLE"/>
<meta name="description" content="Image_Descrip"/>
<link rel="image_src" href="http://My_Img_Url_1.jpg"/>
<link rel="target_url" href="Some_Target_URL"/>
</fb:share-button>

ИЛИ

СПОСОБ-2: Я могу позвонить FB: UI

    <script>
FB.init({ 

 appId:'111111111111111', cookie:true,

    status:true, xfbml:true 
 });

 FB.ui({ method: 'feed', 
 name: '',
 link: '',
 picture: 'http://My_Img_Url_1.jpg'
 });
</script>

Теперь вопросы:

  1. Если я нажму на любое изображение, оно вызовет либо МЕТОД-1, либо МЕТОД-2, и оно появится с этим изображением. Как я могу это сделать?
  2. Если я использую <fb:multi-friend-input /> для публикации на стене друга, как я могу это сделать?

1 Ответ

0 голосов
/ 20 июля 2011

Я бы выбрал вариант 2, так как FBML скоро будет устаревшим (https://developers.facebook.com/docs/reference/fbml/).

Чтобы подвести итог, инициализируйте JS SDK, убедитесь, что ваш пользователь вошел в систему, а затем оберните вызов FB.ui новой функцией. Затем запишите свои изображения на страницу в HTML и назначьте событие click для вызова новой функции Javascript.

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
  // Initialize the Facebook Javascript SDK
  FB.init({
    appid: 'YOUR_APP_ID_HERE',
    status: true,
    cookie:true
  )};

  //Let's grab the userId for the user that is logged in
  //If you user is not logged in, redirect or prompt them to login/install the app.
  var userId = null;
  FB.getLoginStatus(function(response) {
    if (response.session) {
      uid = response.session.uid;
    }
    else {
      //Redirect or prompt to login with FB.login(), etc.
      //https://developers.facebook.com/docs/reference/javascript/FB.login/
    }
  });

  //Create your function to post to the users wall
  function postToWall(userId, imageURI, linkURI, name) {
    FB.ui({ method: 'feed',
      to: userId,
      name: name,
      picture: pictureURI,
      link: linkURI
    }, postToWallCallback);
  }

  //Create your callback function, this will be called when the user sends or closes the
  //Feed Dialog
  var postToWallCallback = function(response) {
     //For testing, let's alert out the contents of the response
     var responseStr = '';
     for(var item in response)
       responseStr += item + "=" + response[item] = "\n";

     alert(responseStr);
  }
</script>

<!-- Now print your image to the page and wrap it in an anchor tag that calls your Javascript function -->
<a href="#" onclick="postToWall(uid, 'my_great_image.jpg', 'my_great_site.jpg', 'My Great Name');">
  <img src="my_great_image.jpg" />
</a>

Этот пример будет публиковаться на стене пользователя. Если вы хотите опубликовать на стене другого пользователя, вам сначала нужно получить идентификаторы друзей текущего пользователя с помощью FB.api ('me / friends', myGreatCallback) (см. https://developers.facebook.com/docs/reference/javascript/FB.api/)) и затем передать это в postToWall ( )

Я написал это, не пытаясь запустить его, дайте мне знать, если у вас возникнут какие-либо ошибки;). Вы можете найти более подробную информацию в Facebook JS SDK по адресу: https://developers.facebook.com/docs/reference/javascript/

...