Есть ли способ программно проверить, если пользователь поделился ссылкой на Facebook?

В настоящее время я использую jQuery для записи каждого клика по ссылке на Facebook на моем сайте, но я ищу более точное решение. Вместо того, чтобы записывать клики, я бы хотел записать фактические «акции». Есть ли способ получить ответное сообщение от Facebook после того, как пользователь разделит ссылку?

Сегодня я столкнулся с этим: http://graph.facebook.com/http://stackoverflow.com

Он возвращает общее количество акций для указанного URL. У меня есть уникальные URL-адреса для каждого пользователя в моем приложении, поэтому я могу легко отслеживать их доли, используя это.

Он также работает для twitter: http://urls.api.twitter.com/1/urls/count.json?url=http://stackoverflow.com

До тех пор, пока он остается активным, вы можете использовать диалог « Feed » Facebook, а не диалог « 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 будет пустым.

Если пользователь НЕ ОБРАЩАЕТСЯ к вашему приложению (они все равно должны быть зарегистрированы в Facebook):

  • response переменная будет нулевой, независимо от того, был ли пользователь разделен или не делился.

Таким образом, если вам абсолютно необходимо подтверждение акций, вы должны сначала попросить пользователя войти в систему. Это не может быть проблемой для вашего приложения, но в моем случае это добавило ненужных трений в процесс совместного использования.


Способ подачи

(Устаревший, но все еще активный)

 FB.ui({ method: 'feed', link: 'http://stackoverflow.com/questions/5363517', caption: 'Test Caption', }, function(response){ console.log(response) }); 

IRRESPECTIVE для входа в систему (обратитесь к своему приложению, они все равно должны быть зарегистрированы в Facebook):

  • Если сообщение было фактически разделено, переменная response возвращаемая Facebook, будет иметь идентификатор сообщения: {post_id: "10205041067000110_10205045578512895"} .
  • Если сообщение не было опубликовано, response будет пустым.

Используя этот метод, вы всегда сможете узнать, был ли кто-то опубликован или нет, независимо от статуса входа в систему.

Вы можете использовать что-то вроде ShareThis вместо вашей функции jquery и даже получить немного больше информации, аналитики и т. Д. Однако вы столкнетесь с той же проблемой, созданной из сторонних сайтов / симпатий, например, размещенных здесь: http: // forums. sharethis.com/topic.php?id=2947

Вот что я делаю … Создайте общий ресурс с помощью обычного якоря, который вызывает эту функцию 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.'); } } ); 

По состоянию на апрель 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 не отражают это.