Можно узнать, зарегистрирован ли пользователь в facebook через javascript API?
Этот вопрос не является дубликатом этого.
Я не хочу знать, разрешил ли пользователь мое приложение, но если пользователь зарегистрировался в facebook (полностью вне зависимости от моего приложения).
Причина в том, что я хочу оценивать комментарии пользователей в моем html-коде, чтобы поисковые системы могли их индексировать.
Когда пользователь регистрируется в facebook, я хочу заменить html-код на фрагмент комментариев в facebook.
Если не появится альтернативная форма комментариев в старой школе.
Я бы потянул комментарии регулярно из графика api, чтобы иметь их в моей базе данных, и комментарии, которые выполняются с использованием классической формы, должны быть опубликованы поверх api (не обязательно, поскольку пользователь может быть учетной записью администратора...) чтобы синхронизировать все данные.
Я посмотрел на Javascript SDK Docs, также нашел функцию getloginstatus, но документация плохая, а не окончательная. Я знаю, что часто есть функции, доступные в кодах facebook, которые не документированы или реализованы в apis более высокого уровня.
Мои вопросы:
-
Могу ли я каким-то образом узнать, зарегистрирован ли пользователь в facebook?
-
Могу ли я каким-либо образом выполнить обратный вызов или уведомление о размещенных комментариях, чтобы я мог инициировать синхронизацию с моей базой данных или мне нужно регулярно сканировать графический файл api?
Ответы
Ответ 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 не является нулевым.