2011-01-31 3 views
2

Я пытаюсь настроить SDK для Javascript Facebook, чтобы пользователи могли войти на сайт через Facebook. Излишне говорить, что я немного смущен документацией на Facebook. Мой первый вопрос: могу ли я обнаружить, когда пользователь приходит на мой сайт, который зарегистрировался в Facebook, и определит свой идентификатор Facebook, а затем зарегистрирует их на моем сайте (все без какого-либо взаимодействия с пользователем)? Кажется, что все работает нормально, за исключением этой части. Если пользователь нажимает кнопку входа в систему Facebook, все работает нормально, а getLoginStatus() работает правильно. Но при начальной загрузке страницы getLoginStatus(), похоже, не вызывает функцию обратного вызова. И у меня создалось впечатление, что не должно быть кнопки входа, вместо этого она должна быть кнопкой «зарегистрироваться» на Facebook, если они вошли в Facebook. Я включил некоторый код ниже. Если бы кто-нибудь мог дать мне какое-либо руководство по этому поводу, я был бы очень признателен. Имейте в виду, что я удалил свой идентификатор приложения и имя моего сайта и заменил их «фиктивным» текстом.facebook javascript sdk getLoginStatus() проблемы

<!-- Load Facebook javascript SDK (This should be the first item after the opening body tag) --> 
<div id="fb-root"></div> 
<script> 
     window.fbAsyncInit = function() { 
     FB.init({appId: myAppId, status: true, cookie: true, 
       xfbml: true}); 

     FB.getLoginStatus(function(response) { 
      if (response.session) { 
      // logged in and connected user, someone you know 
        alert('I know you'); 
      } else { 
      // no user session available, someone you dont know 
       alert('Who are you?'); 
      } 
      alert(response.session.uid); 

     }); 
     }; 

     (function() { 
     var e = document.createElement('script'); e.async = true; 
     e.src = document.location.protocol + 
      '//connect.facebook.net/en_US/all.js'; 

     document.getElementById('fb-root').appendChild(e); 
     }()); 
</script> 
<fb:login-button show-faces="false" width="70" max-rows="1" registration-url="myRegistrationUrl" style="margin: 0; padding: 0;"></fb:login-button> 

ответ

0

Здравствуйте, как я понял, вы хотите войти в систему на своем сайте на основе своих учетных записей на facebook. Я сделал то же самое. Сначала позвольте пользователю войти в facebook, а затем отправить свой идентификатор пользователя в свою пользовательскую таблицу и затем войти в систему на своем сайте. для меня ниже код работает.

 
<div id="fb-root"> 
<script> 
    window.fbAsyncInit = function() { 
    FB.init({appId: "XXXXXX", 
      status: true, 
      cookie: true, 
      xfbml: true}); 

    FB.getLoginStatus(function(response) { 
     if (response.session) { 
     //here send the parameters to your system that logins into your system 
     self.location.href="http://www.yoursite.com/login.php"; 
     } else { 

     } 
    }); 
    FB.Event.subscribe("auth.login", function(response) { 
    window.location.reload(); 
     }); 
FB.Event.subscribe("auth.logout", function(response) { 
    // to logout 

    self.location.href="http://www.yoursite.com/logout.php"; 
     }); 
    }; 
    (function() { 
    var e = document.createElement("script"); 
    e.type = "text/javascript"; 
    e.src = document.location.protocol + 
    "//connect.facebook.net/en_US/all.js"; 
    e.async = true; 
    document.getElementById("fb-root").appendChild(e); 
    }()); 
    </script> 

при регистрации в системе login.php вы можете проверить их имя. и запишите их на свой сайт. Что я сделал, я отправляю свой идентификатор пользователя, который вернулся ко мне через jason в качестве имени пользователя и отправил его, как после md5, в качестве пароля в моем ящике. то я просто сравню идентификатор пользователя в моей пользовательской таблице в login.php и зарегистрирую пользователя на своем сайте. Я надеюсь, что это сработает и для вас.

+0

В login.php вы проверить подпись данных, поступающих от Facebook, чтобы убедиться, что это действительно и безопасно (т.е. не подделать данные) –

+0

@Robert Конн. Я не понимаю, ваша точка дорогой , Если я получаю данные через токен доступа, то как я могу получить поддельные данные? –

Смежные вопросы