Как публиковать на временной шкале автоматически?

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

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

  1. If user logged in but app not authorised
    • Show a button to authorise application
  2. If user logged in and app authorised and visiting article for first time
    • Automatically publish "X has read Y on Z" to their profile and FB
  3. If user logged in and app authorised and visiting article again
    • Don't publish anything

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

ИЗМЕНИТЬ

Хорошо, по какой-то причине это работает (для проверки авторизованы они или нет), но если я уберу часть 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>

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


person pee2pee    schedule 05.12.2011    source источник


Ответы (2)


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

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

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

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

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

person Lachlan McD.    schedule 10.02.2012

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

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

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

person Sean Kinsey    schedule 06.08.2012