Аутентификация Facebook - небезопасная попытка JavaScript получить доступ к фрейму с URL - PullRequest
10 голосов
/ 04 ноября 2011

Я пытаюсь внедрить систему регистрации Facebook на моем сайте.

При попытке подключиться к Facebook я получаю сообщение об ошибке из журнала консоли:

Unsafe JavaScript attempt to access frame with URL https://s-static.ak.fbcdn.net/connect/xd_proxy.php?xxxxxxxxxxxxxxxx

Я использую JavaScript SDK

Я добавил это в тег body:

<div id="fb-root"></div>
<script>
    window.fbAsyncInit = function() {
        FB.init({
            appId      : 'xxxxxxxxxxxxxx',
            status     : true, 
            cookie     : true,
            xfbml      : true
        });
    };
    (function(d){
        var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
        js = d.createElement('script'); js.id = id; js.async = true;
        js.src = "//connect.facebook.net/en_US/all.js";
        d.getElementsByTagName('head')[0].appendChild(js);
    }(document));
    </script>

Кнопка входа в Facebook:

<div class="fb-login-button"  data-perms="email">Login with Facebook</div>

Я тестирую на локальном хосте - я зарегистрировал свой веб-сайт в Facebook для разработки приложений (URL сайта: http://localhost)

Как решить эту проблему? или я должен использовать PHP SDK?

Редактировать: та же проблема при загрузке на сервер с публичным доменом.

Ответы [ 7 ]

4 голосов
/ 03 января 2012

Ошибка, которую вы видите, является нефатальной ошибкой. Для этого нет обходного пути, так как ваш браузер советует вам загружать JavaScript из чужих доменов не очень хорошая идея. Просто проигнорируйте это сообщение и поищите ошибки в других местах, если ваши скрипты не запускаются. Sajith также правильно, что вы не можете отлаживать с localhost.

Смотрите здесь также, Ошибка «Небезопасная попытка JavaScript получить доступ к фрейму с URL ...» постоянно генерируется в инспекторе веб-приложений Chrome

2 голосов
/ 24 октября 2012

Убедитесь, что эта строка вверху страницы (у меня работает):

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="https://www.facebook.com/2008/fbml">
1 голос
/ 11 января 2012

Вы можете использовать только то же доменное имя, в котором вы зарегистрированы в приложениях Facebook.

1. You need a public domain name (www.example.com).
2. You need to register with Facebook apps.
3. Get the 2 keys from the Facebook and use in the code:
    appId      : 'xxxxxxxxxxxxxx',
1 голос
/ 16 декабря 2011

Невозможно проверить всю интеграцию с Facebook, используя домен localhost.Вам необходимо разместить свой скрипт в любом домене общего доступа и обновить URL-адрес на странице настроек приложения разработчика.Ошибка безопасности, отображаемая в JavaScript, связана с доступом к локальному хосту через сценарии facebook

0 голосов
/ 02 августа 2013

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

Выглядело, как будто проблема в конфликте с несколькими fb js-sdk.

Таким образом, решение могло бы заменить addthis facebook как wdiget на собственный facebook как виджет.

также была другая ошибка в webkit, когда js-sdk не был загружен.Я исправил это, заменив window.fbAsyncInit на jQuery.getScript ().В конце концов это также исправило ошибку «Небезопасная попытка JavaScript получить доступ к фрейму с URL».

Вот пример:

$.ajaxSetup({ cache: true });
$.getScript('//connect.facebook.net/en_UK/all.js', function() {
  FB.init({
    appId: 'your app id',
    cookie: true,
    xfbml: true,
    oauth: true,
    status: true
  });
  // Trigger custom event so we can use it to run init dependent actions in different places.
  $(document).trigger('FBSDKLoaded');
  //...
});
0 голосов
/ 26 января 2012

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

В Linux или OSX добавьте запись в / etc / hosts;в Windows отредактируйте c: \ windows \ system32 \ drivers \ etc \ hosts.Добавьте следующую запись:

127.0.0.1 local-dev.mydomain.com local-dev

Где "mydomain.com" - это домен, в котором зарегистрирован идентификатор вашего приложения FB.

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

Была эта ошибка, когда я реализовал fileglu , и это может быть ошибка CORS , поскольку вы работаете с localhost. Попробуйте запустить на Facebook, и вы можете заменить нижнюю половину с кодом ниже:

(function() {
  var e = document.createElement('script');
  e.src = document.location.protocol + 
     '//connect.facebook.net/en_US/all.js#appId=<your-app-id>&xfbml=1';
  e.async = true;
  document.getElementById('fb-root').appendChild(e);
}());

У меня также был включен Oauth 2.0 и пользовательский канал на моей странице FB.init (). См .: http://fbdevwiki.com/wiki/FB.init для получения дополнительной информации.

...