Я бы выбрал вариант 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/