У меня есть веб-сайт ASP.NET, который использует Facebook Connect для аутентификации - с помощью JavaScript API и кнопки Facebook Connect FBML.
Вот обычный поток событий для нажатия кнопки «Подключиться к Facebook», когда пользователь не вошел в Facebook.
- Отображается диалоговое окно с запросом пользователя на вход
- Диалог запрашивает у пользователя разрешение на получение базовой информации
- Всплывающее окно закрыто
- Функция обратного вызова, которую я предоставил для "onlogin", запускается.
Все хорошо.
Теперь - вот что я считаю ошибкой: пользователь уже аутентифицирован в Facebook, но не авторизовал мое приложение.
Это поток:
- Показан диалог, запрашивающий у пользователя разрешение на получение базовой информации.
- URL-адрес всплывающего окна изменится на http://rootofmysite.com/?installed=1&token=3e3920d309 а>
- Пользователь задается вопросом, что происходит, а обратный вызов onlogin НЕ запускается.
Итак, всплывающее окно заменяется моим исходным сайтом, а в строке запроса находится токен OAuth? Похоже, это URL-адрес обратного вызова после авторизации, который раньше находился в настройках приложения Facebook, но был удален. В любом случае, меня не волнует этот URL - я запрашиваю разрешения / авторизацию с помощью клиентского JavaScript API, как я уверен, что многие люди это делают.
Я понимаю, что пользователь уже аутентифицирован, поэтому им не нужно будет снова входить в систему, но я не понимаю: а) почему не вызывается обработчик события "onlogin" и б) почему они заменяют ИХ диалог моим site и токен OAuth в URL-адресе?
На данный момент я пытаюсь найти «творческий обходной путь», при котором я обнаруживаю этот URL, закрываю всплывающее окно и вызываю свой обработчик «onlogin» вручную (что ДОЛЖЕН делать Facebook).
Тем не менее, довольно хитроумно.
ИЗМЕНИТЬ
Это очередной баг народов. Пожалуйста, проголосуйте за это, чтобы они это исправили.