Почему этот простой код Facebook Javascript SDK не работает? - PullRequest
1 голос
/ 07 февраля 2012

Я пытался использовать некоторый код из документации, но он продолжает выдавать ошибку: An error occurred. Please try again later. Что не так с моим кодом?

Соответствующее JSFiddle: http://jsfiddle.net/AHkXS/

Соответствующий HTML:

    <html>
    <head>
      <title>My Facebook Login Page</title>
    </head>
    <body>
      <div id="fb-root"></div>
      <script>
        window.fbAsyncInit = function() {
          FB.init({
            appId      : 'YOUR_APP_ID', //I changed this
            status     : true, 
            cookie     : true,
            xfbml      : true,
            oauth      : 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>
      <div class="fb-login-button" data-scope="email,user_checkins">
        Login with Facebook
      </div>
    </body>
 </html>    

Ответы [ 2 ]

2 голосов
/ 07 февраля 2012

Ниже приведено пошаговое решение вашей проблемы :)
Как я полагаю, ваш код не работает, потому что вы не используете JavaScript должным образом

Вы можете решить свою проблему в 4 шага

Шаг 1

Создайте новое приложение facebook, используя ссылку и отметьте его Идентификатор приложения / Ключ API

Шаг 2

используйте идентификатор приложения / ключ API, который вы указали в Шаг 1

Следующий код загрузит и инициализирует JavaScript SDK со всеми распространенными параметрами. Замените YOUR_APP_ID и WWW.YOUR_DOMAIN.COM соответствующими значениями. Лучшее место для этого кода - сразу после открывающего тега <body>.

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
FB.init({
  appId      : 'YOUR_APP_ID', // App ID
  channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
  status     : true, // check login status
  cookie     : true, // enable cookies to allow the server to access the session
  xfbml      : true  // parse XFBML
  oauth      : true,
});

// Additional initialization code here
  };

  // Load the SDK Asynchronously
  (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>

Шаг 3

Создайте файл channel.html с кодом ниже

  <?php
    $cache_expire = 60*60*24*365;
    header("Pragma: public");
    header("Cache-Control: max-age=".$cache_expire);
    header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$cache_expire) . ' GMT');
  ?>
  <script src="//connect.facebook.net/en_US/all.js"></script>

Шаг 4
Добавьте пространство имен XML к тегу <html> вашего документа. Это необходимо для работы XFBML в более ранних версиях Internet Explorer.

<html xmlns:fb="http://ogp.me/ns/fb#">

Вы можете прочитать все вышеперечисленное в деталях, где почти вся информация приведена ниже по ссылкам

  1. здесь вы можете получить javascript, информацию о канале и другие детали

Спасибо ...

2 голосов
/ 07 февраля 2012

Я думаю, что всякий раз, когда я сталкивался с этой проблемой, это происходило потому, что я тестировал ее вне домена, в котором действовал мой идентификатор приложения.

...