Это возможно только с устаревшими API или с разрешением user_likes
. Как вы хотите решение без конкретных разрешений, я покажу вам 2 метода. Используйте их в сочетании с AJAX для обновления страницы, когда пользователь нажимает like
.
Вариант 1) REST API
Используя устаревший API, можно использовать Pages.IsFan
https://api.facebook.com/method/pages.isFan?
page_id=...&
uid=...&
access_token=...
Сделайте это в C # следующим образом.
var appID = "....";
var appSecret = "....";
var uid = "....";
var pageId = "....";
WebClient client = new WebClient();
var appAuthUri = string.Concat("https://graph.facebook.com/oauth/access_token?",
"client_id=", appID,
"&client_secret=", appSecret,
"&grant_type=", "client_credentials"
);
var response = client.DownloadString(appAuthUri);
var access_token = response.Split('=')[1];
var isFanUri = string.Concat("https://api.facebook.com/method/pages.isFan?",
"format=", "json",
"&page_id=", pageId,
"&uid=", uid,
"&access_token=", access_token
);
response = client.DownloadString(isFanUri);
bool isFan;
bool.TryParse(response, out isFan);
Вариант 2) Клиентская сторона
Метод FBXML
. Это делается с помощью Javascript на клиенте путем подписки на событие, когда пользователь нажимает кнопку like
. Это задокументировано здесь .
Как узнать, когда пользователь нажимает кнопку «Мне нравится»?
Если вы используете версию кнопки в формате XFBML, вы можете подписаться на
событие 'edge.create' через FB.Event.subscribe.
Создать кнопку, похожую на FBXML здесь .
<div id="fb-root"></div>
<script>(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js#appId=132240610207590&xfbml=1";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));</script>
<div class="fb-like" data-href="http://www.thecodeking.co.uk" data-send="true" data-width="450" data-show-faces="false"></div>
Затем подпишитесь на событие edge.create
, используя Javascript SDK . Поместите этот код в документ BODY
предпочтительно непосредственно перед концом.
<script type="text/javascript">
<!--
window.fbAsyncInit = function () {
FB.init({ appId: '245693305442004', status: true, cookie: true, xfbml: true });
FB.Event.subscribe('edge.create',
function (href, widget) {
// Do something here
alert('User just liked '+href);
});
(function () {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
} ());
};
//-->
</script>