Есть ли способ программно проверить, если пользователь поделился ссылкой на 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 не отражают этого.