Как программно определить, блокирует ли пользовательский прокси доступ к Facebook - PullRequest
3 голосов
/ 26 апреля 2011

Мы разрабатываем веб-приложение (http://beta.dammela.it), которое использует как сервер FB Graph api, так и FB Javascript SDK и социальные плагины.

Глубокая интеграция с FB , и мы хотели бы обнаружить, когда пользователь, посещающий наш веб-сайт, находится за прокси-сервером, который блокирует весь трафик к свойствам Facebook (как на каком-то рабочем месте).

Если бы мы могли обнаружить, что он заблокирован, мы могли бы дать ему / ей некоторые советы, помощь, объяснения и некоторые альтернативные методы входа в систему и взаимодействия с приложением.

Но я не могу понять, как это сделать.

Я думаю, но это только мое предположение, есть способ определить, заблокирован ли пользовательский доступ к Facebook, проверяя что-то в Javascript SDK , но я не смог выяснить, что и / или как.

Есть идеи?

Ответы [ 5 ]

7 голосов
/ 08 мая 2011

Explaination:
Мы пытаемся загрузить значок Facebook. Если выдается ошибка, мы знаем, что Facebook заблокирован.
Примечание: Когда прокси-сервер блокирует URL, он возвращает клиенту ошибку в диапазоне 4xx.

Код:

var img = new Image();
img.onerror = function () {
 alert("It seems Facebook is blocked!"); 
}
img.src = "http://facebook.com/favicon.ico";

Вы можете попробовать это здесь .

Обновление : заменен код C # на стороне сервера на клиентский JavaScript.

1 голос
/ 26 апреля 2011

Мои предложения заключаются в том, что, поскольку вы загружаете Facebook JS SDK, стоит посмотреть на использование возможностей динамической загрузки скриптов, которые есть в библиотеках в Интернете (я думаю, что в Closure от Google он встроен), и попытаться динамически загрузить SDK.

В этот момент вы должны иметь возможность либо A. поймать ошибку при попытке, либо B. запросить, успешно ли загружен скрипт (либо с помощью методов, предоставляемых платформой, либо просто вызвав действие SDK и проверив, получаете ли вы какая-то неопределенная ошибка).

Если вы не можете загрузить SDK, что подразумевает что-то катастрофическое.

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

0 голосов
/ 27 апреля 2011

попробуйте вставить это в ваш HTML-код:

<strong>
<div class="fblikebutton_button" style="float: ; margin-left: 10px;">
   <iframe src="Delphi%20Certification%20Beta%20Program%20_%20Andreano%20Lanusse%20Blog%20_%20Technology%20and%20Software%20Development_files/like_002.htm" allowtransparency="true" style="border: medium none; overflow: hidden; width: 450px; height: 26px;" scrolling="no" frameborder="0"></iframe>
</div>
</strong>



<div class="fblikebutton_button" style="float: ; margin-left: 10px;">
<iframe src="Delphi%20Certification%20Beta%20Program%20_%20Andreano%20Lanusse%20Blog%20_%20Technology%20and%20Software%20Development_files/like_002.htm" allowtransparency="true" style="border: medium none; overflow: hidden; width: 450px; height: 26px;" scrolling="no" frameborder="0"></iframe>
</div>
0 голосов
/ 26 апреля 2011

Я думаю, что наиболее подходящим способом было бы создать специальную тестовую страницу, на которой вы можете выводить некоторые тестовые данные через fb api и две аналогичные кнопки «Я вижу данные» «На странице нет данных».В зависимости от ответа пользователя вы можете дать ему / ей совет или продолжить работу

0 голосов
/ 26 апреля 2011

Зайдите в вашу программу "http://www.facebook.com/" и посмотрите, получите ли вы исходный код, подобный тому, который можно найти на текущей домашней странице. Если вы можете, тогда нет блокировки Facebook, иначе это так!: D

...