Подтвердить что ты не робот

Можно узнать, зарегистрирован ли пользователь в facebook через javascript API?

Этот вопрос не является дубликатом этого.

Я не хочу знать, разрешил ли пользователь мое приложение, но если пользователь зарегистрировался в facebook (полностью вне зависимости от моего приложения).

Причина в том, что я хочу оценивать комментарии пользователей в моем html-коде, чтобы поисковые системы могли их индексировать.

Когда пользователь регистрируется в facebook, я хочу заменить html-код на фрагмент комментариев в facebook.

Если не появится альтернативная форма комментариев в старой школе.

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

Я посмотрел на Javascript SDK Docs, также нашел функцию getloginstatus, но документация плохая, а не окончательная. Я знаю, что часто есть функции, доступные в кодах facebook, которые не документированы или реализованы в apis более высокого уровня.

Мои вопросы:

  • Могу ли я каким-то образом узнать, зарегистрирован ли пользователь в facebook?

  • Могу ли я каким-либо образом выполнить обратный вызов или уведомление о размещенных комментариях, чтобы я мог инициировать синхронизацию с моей базой данных или мне нужно регулярно сканировать графический файл api?

4b9b3361

Ответ 1

Эта статья

https://grepular.com/Abusing_HTTP_Status_Codes_to_Expose_Private_Information

идентифицирует риски безопасности в Google и Facebook, которые позволят вам определить, зарегистрирован ли пользователь. Хотя официальный API не существует, чтобы проверить, зарегистрирован ли пользователь без этого пользователя, дающего вам явное разрешение на доступ к этой информации, приведенное выше статья показывает, как вы можете "угадать", если пользователь зарегистрирован или нет.

Примечание. В статье указывается "взломать", и поэтому не гарантируется работа в будущем, если или когда Google и Facebook идентифицируют эти риски безопасности.

Ответ 2

Существует не-хак, официально поддерживаемый способ сделать это для Facebook (я думаю, что последняя версия документов была более четкой в ​​этом вопросе). Используя Javascript SDK, вы можете:

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {

    FB.init({appId: 'YOUR APP ID', status: true, cookie: true,
             xfbml: true});

    FB.getLoginStatus(function(o) { 
       if (!o && o.status) return;
       if (o.status == 'connected') {
          // USER IS LOGGED IN AND HAS AUTHORIZED APP
       } else if (o.status == 'not_authorized') {
          // USER IS LOGGED IN TO FACEBOOK (BUT HASN'T AUTHORIZED YOUR APP YET)
       } else {
          // USER NOT CURRENTLY LOGGED IN TO FACEBOOK
       }
    });

  };

  (function() {
    var e = document.createElement('script'); e.async = true;
    e.src = document.location.protocol +
      '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
  }());

</script>

В стороне: если XAuth поймал, это можно было бы сделать более универсальным и поддерживаемым способом для любого сайта, поддерживающего этот стандарт.

Ответ 3

Я также столкнулся с аналогичными требованиями и решил свою проблему с помощью следующего кода; Используя Javascript SDK, я использовал объект FB. FB - это объект facebook, он имеет свойство, называемое _userStatus, его можно использовать следующим образом.

if(FB._userStatus == "connected")
{
// USER IS LOGGED IN AND HAS AUTHORIZED APP 
}
else if(FB._userStatus == "notConnected"){
   // USER IS LOGGED IN TO FACEBOOK (BUT HASN'T AUTHORIZED YOUR APP YET)  
}
else if(FB._userStatus == "unknown")
{
    // USER NOT CURRENTLY LOGGED IN TO FACEBOOK 
}

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