Как автоматически публиковать на временной шкале? - PullRequest
2 голосов
/ 05 декабря 2011

http://www.independent.co.uk/ и http://www.guardian.co.uk/ имеют приложение, в котором, если вы читаете статью на их сайте, оно пишет в ваш профиль / временную шкалу, что «X прочитал Y на Z».

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

  1. Если пользователь вошел в систему, но приложение не авторизовано
    • Показать кнопку для авторизации приложения
  2. Если пользователь вошел в систему и приложение авторизировало и впервые посетило статью
    • Автоматически опубликовать "X прочитал Y на Z" в своем профиле и FB
  3. Еслипользователь вошел в систему и авторизовал приложение и снова посетил статью
    • Ничего не публикуйте

Имеет ли это смысл?Есть ли примеры этого вокруг?Таким образом, в основном стремление к временной шкале не является проблемой, это просто различные проверки, которые мне нужно поставить.

РЕДАКТИРОВАТЬ

Хорошо, по некоторым причинам это работает(для проверки они авторизованы или нет), но если я уберу часть alert('test');, она не будет работать.Есть идеи?

<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) {return;}
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=123456789";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

alert('test');

    FB.init({ 
        appId:'123456789', cookie:true, 
        status:true, xfbml:true, oauth:true
    });

FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    var uid = response.authResponse.userID;
    var accessToken = response.authResponse.accessToken;
    alert('Logged in and connected');
    $(read);
  } else if (response.status === 'not_authorized') {
    alert('Logged into FB but not authorised');
  } else {
    alert('Not logged into FB');
  }
});
</script>

Ладно, все заработало частично.Есть некоторые небольшие недоработки, но главная проблема теперь состоит в том, чтобы проверить, отправили ли они уже определенное действие в график времени.Если они не опубликовали другую, например, поэтому, когда они впервые попадают в статью, добавляется статус «Джон прочитал статью на Сайте».Однако, если они перейдут к нему снова, он не будет добавлен

Ответы [ 2 ]

1 голос
/ 10 февраля 2012

Это против Политики платформы Facebook . Смотрите раздел IV часть 3:

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

Вы не можете публиковать сообщения на временной шкале пользователя \ стене без предварительного разрешения. У Independent и The Guardian есть уникальное соглашение с Facebook, которое освобождает их от этих ограничений.

Это то, что вы получите строго сформулированное предупреждение по электронной почте или, что еще серьезнее, приостановку аккаунта разработчика.

Всегда полезно взглянуть на Контрольный список политик и рекламных предложений платформы перед началом нового проекта.

0 голосов
/ 06 августа 2012

Ваш код работает только с предупреждением из-за состояния гонки в вашем коде. Вы загружаете SDK асинхронно (что необходимо), но затем пытаетесь использовать его синхронно , немедленно вызывая FB.init.

Вам необходимо определить функцию fbAsyncInit, в которой вы вызываете FB.init. Это гарантирует, что вы не попытаетесь вызвать FB.init до загрузки SDK.

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

...