Ошибка подключения к Facebook? (URL после авторизации помещается в окно вместо обратного вызова OnLogin)

У меня есть веб-сайт ASP.NET, который использует Facebook Connect для аутентификации - с помощью JavaScript API и кнопки Facebook Connect FBML.

Вот обычный поток событий для нажатия кнопки «Подключиться к Facebook», когда пользователь не вошел в Facebook.

  1. Отображается диалоговое окно с запросом пользователя на вход
  2. Диалог запрашивает у пользователя разрешение на получение базовой информации
  3. Всплывающее окно закрыто
  4. Функция обратного вызова, которую я предоставил для "onlogin", запускается.

Все хорошо.

Теперь - вот что я считаю ошибкой: пользователь уже аутентифицирован в Facebook, но не авторизовал мое приложение.

Это поток:

  1. Показан диалог, запрашивающий у пользователя разрешение на получение базовой информации.
  2. URL-адрес всплывающего окна изменится на http://rootofmysite.com/?installed=1&token=3e3920d309
  3. Пользователь задается вопросом, что происходит, а обратный вызов onlogin НЕ запускается.

Итак, всплывающее окно заменяется моим исходным сайтом, а в строке запроса находится токен OAuth? Похоже, это URL-адрес обратного вызова после авторизации, который раньше находился в настройках приложения Facebook, но был удален. В любом случае, меня не волнует этот URL - я запрашиваю разрешения / авторизацию с помощью клиентского JavaScript API, как я уверен, что многие люди это делают.

Я понимаю, что пользователь уже аутентифицирован, поэтому им не нужно будет снова входить в систему, но я не понимаю: а) почему не вызывается обработчик события "onlogin" и б) почему они заменяют ИХ диалог моим site и токен OAuth в URL-адресе?

На данный момент я пытаюсь найти «творческий обходной путь», при котором я обнаруживаю этот URL, закрываю всплывающее окно и вызываю свой обработчик «onlogin» вручную (что ДОЛЖЕН делать Facebook).

Тем не менее, довольно хитроумно.

ИЗМЕНИТЬ

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


person RPM1984    schedule 13.09.2010    source источник
comment
Я не использую OAuth для аутентификации - все это с использованием клиентского JavaScript API. не имеет смысла. Как вы думаете, как Javascript API взаимодействует с серверами Facebook?   -  person Yuliy    schedule 13.09.2010
comment
@Yuliy - позвольте мне перефразировать - я не перенаправляю пользователя на graph.facebook.com/oauth/authorize для их аутентификации. У меня есть кнопка FB: Login, которая обрабатывает аутентификацию - используя FB.init и библиотеку FeatureLoader.js.   -  person RPM1984    schedule 13.09.2010
comment
Похоже, у кого-то такая же проблема. stackoverflow.com/questions/3695353/   -  person RPM1984    schedule 13.09.2010
comment
и здесь: forum.developers.facebook.net/viewtopic.php?id=73747   -  person RPM1984    schedule 13.09.2010


Ответы (1)


Это (неподтвержденная) ошибка.

http://bugs.developers.facebook.net/show_bug.cgi?id=12260

Надеюсь, он наберет больше голосов и будет исправлен - голосуйте за людей!

А пока я (пытаюсь) использовать следующий «творческий обходной путь»:

  1. Добавьте логику на мою страницу Default.aspx, чтобы определить, на какой URL они перенаправляются во всплывающем окне.
  2. Перенаправить на мою страницу FacebookInboundAuthorization.aspx с сохранением строки запроса.
  3. При загрузке этой страницы зарегистрируйте некоторый JavaScript, чтобы закрыть всплывающее окно, и вручную запустить обработчик события onlogin для моей кнопки.

ИЗМЕНИТЬ

Чтобы прояснить вышесказанное, я имел в виду не «голосовать за людей», чтобы проголосовать за мой ответ здесь, я имел в виду голосование за ошибку в Bugzilla (чтобы FB принял это как проблему и исправил).

person RPM1984    schedule 13.09.2010
comment
Я не думаю, что голосование здесь за ваш вопрос, чтобы ребята из fb исправили его, является правильным путем ... Но хорошее наблюдение! - person Matias; 14.09.2010
comment
Единственные другие способы исправить это - это грязные хаки, как предлагает RPM1984, или переход на новый SDK, который может быть или не быть вариантом для разработчиков, в зависимости от уровня сложности их интеграции и имеющихся у них ресурсов. Я все же считаю, что стоит проголосовать. - person BBonifield; 14.09.2010
comment
@Matias - я поднял этот вопрос до того, как узнал об ошибке. Как только я нашел ошибку, я подумал, что стоит опубликовать ее в качестве ответа, так как люди могут прийти сюда и узнать, что это ошибка, поэтому они не будут тратить часы на ее поиск (как я). Кроме того, я упоминаю об альтернативе (которую я пытаюсь реализовать, но у меня проблемы с обработкой моей функции onlogin). Переход на новый SDK - это не краткосрочная возможность. Это живое приложение, которое не работает. - person RPM1984; 14.09.2010