Путаница при входе в Facebook

Я планирую интегрировать кнопку входа через Facebook на свой веб-сайт. Прямо сейчас у меня есть кнопка входа в Facebook, при нажатии которой открывается новое окно с запросом разрешения на доступ к основной информации и электронной почте пользователя. Все, что сделано до сих пор, связано с подпиской на http://developers.facebook.com/docs/guides/web/#login. Я использую PHP (с фреймворком Codeigniter, библиотекой аутентификации Tank) и jQuery.

Проблема: теперь, после добавления кнопки входа на мой веб-сайт, у Facebook больше нет инструкций о том, что делать дальше?

  1. Как получить информацию о пользователе из facebook для вставки в мою базу данных (при первом посещении)
  2. Как определить, что пользователь разрешил моему веб-сайту доступ к своей информации?
  3. Если доступ был предоставлен, как мне перенаправить пользователя на новую страницу?

Я понимаю, что в SDK были внесены недавние изменения, и поиск в Google руководств по нему просто дает мне учебники, в которых говорится, что они устарели. Любая помощь, чтобы указать мне в правильном направлении, будет принята с благодарностью! Спасибо!

HTML/JS

<div id="fb-root"></div>
<script>
    window.fbAsyncInit = function() {
        FB.init({
            appId      : '123',
            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 id="splash_fbconnect_login_button" class="fb-login-button" data-scope="email, user_education_history, user_work_history"></div>

person Nyxynyx    schedule 17.02.2012    source источник
comment
так вы используете javascript для входа в facebook? или пхп? добавьте код входа, пожалуйста.   -  person bool.dev    schedule 17.02.2012
comment
Обновлен исходный вопрос с кодом. Я не уверен, где мне использовать Javascript или PHP SDK? Или мне нужны оба? Реально запутался, извините   -  person Nyxynyx    schedule 17.02.2012
comment
как и в случае с bool dev, вы должны указать здесь код входа в facebook, чтобы можно было устранить неполадки.   -  person Zaffar Saffee    schedule 17.02.2012
comment
Под кодом входа в facebook вы имеете в виду код PHP или JS?   -  person Nyxynyx    schedule 17.02.2012
comment
С кодом, приведенным выше в сообщении, я уже получаю кнопку входа в FB, при нажатии на которую появляется новое всплывающее окно с запросом разрешения. Интересно, как продолжить оттуда   -  person Nyxynyx    schedule 17.02.2012


Ответы (1)


Быстрое редактирование: перейдите на страницу https://github.com/facebook/connect-js и убедитесь, что вы иметь последнюю версию и использовать PHP, это делает его намного проще, как я понял.

1) Как получить информацию о пользователе из facebook для вставки в мою базу данных (при первом посещении)

$user_profile['last_name'];
$user_profile['first_name'];
$user_profile['gender']; 

и т.п.

2) Как определить, что пользователь разрешил моему веб-сайту доступ к своей информации?

API facebook знает об этом, не волнуйтесь :-), поскольку, когда пользователь нажимает кнопку входа, появляется всплывающее окно (как вы упомянули в своем вопросе), и когда они нажимают кнопку «Разрешить это».

Одна вещь, которую вы должны сделать, это создать приложение в Facebook, иначе оно не будет работать, я не уверен, сделали ли вы это или нет, поэтому перейдите на https://developers.facebook.com/apps

3)Если доступ был предоставлен, как мне перенаправить пользователя на новую страницу?

Перенаправление Javascript в операторе if, вот как выглядит мой

Обязательно установите здесь некоторые переменные:

   <?php // Set the variables for the MVC
      $first_name = $user_profile['first_name'];
      $last_name = $user_profile['last_name'];
      $full_name = $first_name . " " . $last_name;
      $fb_id = $user_profile['id'];
      $gender = $user_profile['gender'];



       $SrcUser = mysql_query("SELECT * FROM users WHERE fb_id = '" . $fb_id . "'") or die(mysql_error());
      $CheckDB = mysql_num_rows($SrcUser);

      if($CheckDB == 1){
          // If user has an account

          while ($row = mysql_fetch_array($SrcUser)) 
                { 
                     $id = $row["id"];
                     $user_level = $row["user_level"];
                }
        session_start();
        $_SESSION['user_name'] = $full_name;
        $_SESSION['user_level'] = $user_level;
        $_SESSION['user_id']= $id;  
        // Javascript redirect.. its kinda cheating to be honest as if i dont use it i will have awkwardness with header errors
        ?>
  <script type="text/javascript">
        window.location = "myaccount.php"
        </script>
        <?
      } else {
          // If user does not have an account create new
        ?>  <?
        session_start();
        $_SESSION['fb_id']= $fb_id;  

        if($gender == "male"){
            $gender = "1";
        } else {
            $gender = "0";
        }
        $_SESSION['r_full'] = $full_name;
        $_SESSION['r_gender'] = $gender;

        mysql_query("INSERT INTO users (full_name, gender, fb_id)
            VALUES ('$full_name','$gender','$fb_id')");
        $user_id = mysql_insert_id();  
        $md5_id = md5($user_id);
        mysql_query("update users set md5_id='$md5_id' where id='$user_id'");

            $md5_id = md5($user_id);
            mysql_query("update users set md5_id='$md5_id' where id='$user_id'");

        ?>

Надеюсь это поможет!

person Ian Taylor    schedule 17.02.2012
comment
Спасибо, Ян, какая часть документов Facebook PHP SDK говорит нам, что мы можем получить фамилию и т. д. от $user_profile['last_name']; и т. д.? - person Nyxynyx; 17.02.2012
comment
@Nyxynyx Нет проблем :-) если это правильный ответ, не забудьте поставить галочку, если он работает для вас =). У меня ушло столько времени, чтобы узнать эти параметры, что это было нереально! В конце концов, я посмотрел на массив, который распечатывает версия PHP, вы увидите, что [first_name] = ian [last_name] = blahh [gender] = male и т. д., и то, что вы видите в [], я предположил, что это были параметры , какими они были. Но я не уверен, где находится официальная документация, в старом SDK был какой-то четкий документ, но больше нет :-/ я бы также посоветовал посмотреть раздел графа API на сайте facebook. - person Ian Taylor; 17.02.2012