Facebook Auth Dialog (JS) не отображается в IE & Chrome - PullRequest
1 голос
/ 18 января 2012

В настоящее время я занимаюсь разработкой приложения для Facebook (это не мое первое приложение), и я столкнулся с некоторыми или множеством проблем.

Файл index.php включает содержимое, основанное на $ _GET ['page '] переменная.(например, «step1», «step2»).

На «step2» есть форма для загрузки видео.Поле имеет событие onChange (), которое запускает этот код:

function submitForm() {
  console.log('submitting...');
  FB.login(function(response) {
  if (response.authResponse) {
   console.log('Welcome!  Fetching your information.... ');
   FB.api('/me', function(response) {
     console.log('Good to see you, ' + response.name + '.');
     jQuery('#fuserid').val(response.id);

     jQuery('#uploadForm').submit();
     jQuery('.formContent').hide();
     jQuery('.loader').show();
   });
  } else {
   console.log('User cancelled login or did not fully authorize.');
   window.location = "index.php?page=contest&error=not_authenticated&signed_request=" + "<?php echo $_REQUEST['signed_request']; ?>"
  }
  }, {scope: 'email,user_birthday,publish_stream,user_likes'});
}

В Firefox это работает точно так, как должно.В любой версии Internet Explorer всплывающее окно «Facebook-аутентификация» не открывается, а также не отправляется форма или что-либо еще.ЗА ИСКЛЮЧЕНИЕМ, когда инструменты разработчика [из IE] активированы и открыты - в этом случае все работает в IE.

Chrome прост, иногда всплывающее окно не открывается, и я получаю следующее сообщение об ошибке:

> Unsafe JavaScript attempt to access frame with URL
> https://www.facebook.com/dialog/permissions.request from frame with
> URL
> http://mydomain.at/myapp/index.php?page=contest&signed_request=XXXX

Я провел некоторое исследование, и исследование говорит мне, что $ channelUrl должен решить эту проблему.Вот код из моего fb.init:

<div id="fb-root"></div>
<script>
(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/de_DE/all.js#xfbml=1&appId=<?php echo $appID; ?>";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<script type="text/javascript">
  window.fbAsyncInit = function() { 
    FB.init({ 
      appId      : '<?php echo $appID; ?>', // App ID 
      channelUrl : 'http://mydomain.at/myapp/channel.html', // Channel File
      status     : true, // check login status 
      cookie     : true, // enable cookies to allow the server to access the session 
      oauth      : true, // enable OAuth 2.0 
      xfbml      : true  // parse XFBML 
    }); 

    // Additional initialization code here  
    window.setTimeout(function() {
      FB.Canvas.setAutoResize();
    }, 150);
  };
</script>

Почему это всплывающее окно аутентификации не работает в IE, а только иногда работает в Chrome?Почему Developer-Tools так сильно изменяют поведение IE, что все работает?

1 Ответ

1 голос
/ 18 января 2012

Для IE проблема, вероятно, связана с "console.log (...)": console.log доступен только при открытом инструменте разработчика. Вы должны закомментировать это или использовать резервную функцию для регистрации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...