Диалог авторизации Facebook (JS SDK) возвращает пустой экран - PullRequest
3 голосов
/ 12 ноября 2011

Я настраиваю приложение rails и пытаюсь осуществить вход через Facebook JS SDK.Уже отсутствует Omniauth ...: (*

В любом случае, всплывает диалоговое окно, пользователь предоставляет информацию для входа в систему, но затем перенаправляет на пустой экран https://www.facebook.com/connect/window_comm.php?_id=some-string&_relation=opener&auth_token=some-big-string. Всплывающее окно не отображается.не закрывайтесь.

Если я закрою его вручную, но затем обновлю свою страницу, я вижу, что вход в систему произошел.

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

Проверено на Chrome, FF, Safari и Opera. Последовательное поведение.

Если я отлаживаюна пустой странице перенаправления в Chrome есть две ошибки:

1) Unsafe JavaScript attempt to access frame with URL http://something from frame with URL https://something. Domains, protocols and ports must match. (примечание http x https ...)

2) window_comm.php:7Uncaught TypeError: Cannot call method '_recv' of undefined

Вотсоответствующий код:

<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId      : 'my-app-id',
      status     : true,
      channelURL : 'http://localhost:3000/channel.html',
      cookie     : true,
      oauth      : true,
      xfbml      : true
    });

    FB.Event.subscribe('auth.login', function(response) {
      window.location.reload();
    });
  };
  (function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/pt_BR/all.js"
    fjs.parentNode.insertBefore(js, fjs); 
    } 
    (document, 'script', 'facebook-jssdk'));
</script>
<div class="fb-login-button" data-show-faces="true" data-width="400" data-max-rows="1" perms="offline_access"></div>

Большое спасибо за любой свет на это ... сводит меня с ума!= (

Редактировать: это может быть ошибка на Facebook, так как он перенаправляет с http на https?

1 Ответ

0 голосов
/ 12 ноября 2011

Это отвечает только на вопрос Q.1). Новые требования Facebook: -

  • переключение на Oauth2.0 для получения token_access
  • с использованием SSL (то есть: https://) для аутентификации (отсюда и проблемы с несколькими доменами)

Кроме того, я обычно начинаю с приведенного ниже кода, чтобы выяснить возможное состояние пользователя во время процесса входа в систему. Это означает, что нужно щелкнуть что-либо по всему на этапе тестирования.

FB.Event.subscribe('auth.authResponseChange', function(response) {
    alert('The status of the session is: ' + response.status);
});
...