Есть ли способ программно проверить, если пользователь поделился ссылкой на Facebook?
В настоящее время я использую jQuery для записи каждого клика по ссылке на Facebook на моем сайте, но я ищу более точное решение. Вместо того, чтобы записывать клики, я бы хотел записать фактические "акции". Есть ли способ получить ответное сообщение от Facebook после того, как пользователь разделит ссылку?
Ответы
Ответ 1
Я наткнулся на это сегодня: /fooobar.com/...
Он возвращает общее количество акций для указанного URL. У меня есть уникальные URL-адреса для каждого пользователя в моем приложении, поэтому я могу легко отслеживать их доли, используя это.
Он также работает для twitter: /fooobar.com/...
Ответ 2
Пока он остается активным, вы можете использовать диалог " Feed, а не " Share", чтобы ВСЕГДА получить подтверждение об общем доступе. (Это относится к Javascript Facebook SDK.)
Здесь мое понимание различий между ними:
FB.ui({
method: 'share',
href: 'http://stackoverflow.com/questions/5363517',
}, function(response){
console.log(response)
});
Если пользователь зарегистрирован и авторизовался в вашем приложении:
- Если сообщение было опубликовано, вы получите идентификатор сообщения в переменной
response
: {post_id: "10205041067000110_10205045578512895"}
.
- Если сообщение не было общим,
response
будет иметь значение null.
Если пользователь НЕ ДОПУСКАЕТСЯ в вашем приложении (они все равно должны быть зарегистрированы в Facebook):
- Переменная
response
будет иметь значение null, независимо от того, был ли пользователь поделился или не разделился.
Таким образом, если вам абсолютно необходимо подтверждение акции, вы должны сначала попросить пользователя войти в систему. Это не может быть проблемой для вашего приложения, но в моем случае это добавило ненужного трения в процесс совместного доступа.
(Устаревший, но все еще активный)
FB.ui({
method: 'feed',
link: 'http://stackoverflow.com/questions/5363517',
caption: 'Test Caption',
}, function(response){
console.log(response)
});
IRRESPECTIVE статуса входа (w.r.t. ваше приложение, все равно необходимо войти в Facebook):
- Если сообщение было фактически разделено, переменная
response
, возвращаемая Facebook, будет иметь идентификатор сообщения: {post_id: "10205041067000110_10205045578512895"}
.
- Если сообщение не было общим,
response
будет иметь значение null.
Используя этот метод, вы всегда сможете узнать, был ли кто-то опубликован или нет, независимо от их статуса входа.
Ответ 3
Вы можете использовать что-то вроде ShareThis вместо вашей функции jquery и даже получить немного больше информации, аналитики и т.д.
Тем не менее, вы столкнетесь с той же проблемой, созданной из внесайтовых акций/симпозиумов, например: http://forums.sharethis.com/topic.php?id=2947
Ответ 4
Вот что я делаю.... Создайте общий ресурс с помощью обычного якоря, который вызывает эту функцию javascript (расстояние или скобки или что-то может быть выключено):
FB.ui(
{
display:'iframe',
method: 'stream.publish',
caption: 'Put something here',
description: 'put something here',
name: 'foo',
link: 'http://www.foo.com',
picture: 'http://fo.com/img.gif'
},
function (response) {
if (response && response.post_id) {
//this means the post was completed....response.post_id is the FB post ID
$.ajax({
var URL = '/pages/ajax_InsertUserFacebookPost.aspx?';
URL += 'facebookpostid=' + response.post_id;
type: "GET",
url: URL,
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true
});
} else {
//alert('Post was not published.');
}
}
);
Ответ 5
По состоянию на апрель 2016 года Twitter устарел v1 своего api и не предоставляет альтернативу для предыдущего метода для определения акций для ссылка. Вы должны использовать свой поиск api, который поддерживает только количество акций за последние 7 дней, и теперь вам нужно подписаться на их потоковое api, чтобы поддерживать ваши собственный длинный счет.
В качестве альтернативы вы можете использовать бесплатный сервис, например http://newsharecounts.com или http://opensharecount.com/, чтобы они могли подписаться на api от вашего имени и поддерживать счет. Однако ожидайте, что количество акций может занять минуту (или больше) для обновления.
Из новостей newsharecounts FAQ -
"Независимо от того, насколько велик ваш сайт или сколько лет ваш контент, мы обнаруживаем новые акции в среднем за 1 минуту"
На главной странице opensharecount.com -
"Может потребоваться некоторое время для поиска результатов, поэтому изначально подсчет будет равен нулю по всем ссылкам. Свяжитесь с нами, если через час он все равно равен нулю.
Re: FB sharing (http://graph.facebook.com/(url)), обратите внимание, что его можно использовать для использования диалога совместного доступа и выбрать "Только я" ', и он по-прежнему учитывается так же, как если бы они делились со своими друзьями. Знайте, что продавец может также удалить сообщение вскоре после этого, но будущие обращения к api не отражают этого.