ความสับสนในการเข้าสู่ระบบ Facebook

ฉันกำลังวางแผนที่จะรวมปุ่มเข้าสู่ระบบด้วย Facebook เข้ากับเว็บไซต์ของฉัน ตอนนี้ฉันมีปุ่มเข้าสู่ระบบด้วย Facebook ซึ่งเมื่อกดแล้วจะมีหน้าต่างใหม่ปรากฏขึ้นเพื่อขออนุญาตเข้าถึงข้อมูลพื้นฐานและอีเมลของผู้ใช้ ทุกสิ่งที่ทำจนถึงขณะนี้มาจากการติดตาม http://developers.facebook.com/docs/guides/web/#login. ฉันใช้ PHP (พร้อมเฟรมเวิร์ก Codeigniter, ไลบรารีการตรวจสอบสิทธิ์ Tank auth) และ jQuery

ปัญหา: ตอนนี้หลังจากเพิ่มปุ่มเข้าสู่ระบบบนเว็บไซต์ของฉันแล้ว Facebook ไม่มีคำแนะนำเกี่ยวกับวิธีการดำเนินการต่ออีกต่อไป

  1. ฉันจะดึงข้อมูลผู้ใช้จาก Facebook เพื่อแทรกลงในฐานข้อมูลของฉันได้อย่างไร (หากเข้าชมครั้งแรก)
  2. ฉันจะทราบได้อย่างไรว่าผู้ใช้อนุญาตให้เว็บไซต์ของฉันเข้าถึงข้อมูลของเขา?
  3. หากได้รับอนุญาตให้เข้าถึง ฉันจะเปลี่ยนเส้นทางผู้ใช้ไปยังเพจใหม่ได้อย่างไร

ฉันเข้าใจว่ามีการเปลี่ยนแปลง SDK เมื่อเร็วๆ นี้ และการใช้ Google สำหรับบทช่วยสอนเกี่ยวกับ SDK ทำให้ฉันมีบทช่วยสอนที่บอกว่าล้าสมัยแล้ว ความช่วยเหลือใด ๆ ที่ชี้ให้ฉันไปในทิศทางที่ถูกต้องจะได้รับการชื่นชมอย่างมาก! ขอบคุณ!

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
คุณใช้จาวาสคริปต์เพื่อเข้าสู่ระบบ Facebook หรือไม่? หรือ PHP? โปรดเพิ่มรหัสเข้าสู่ระบบ   -  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) ฉันจะทราบได้อย่างไรว่าผู้ใช้อนุญาตให้เว็บไซต์ของฉันเข้าถึงข้อมูลของเขา?

Facebook API รู้สิ่งนี้ ไม่ต้องกังวล :-) เนื่องจากเมื่อผู้ใช้คลิกเข้าสู่ระบบป๊อปอัปจะปรากฏขึ้น (ตามที่คุณพูดถึงในคำถามของคุณ) และเมื่อพวกเขาคลิกก็อนุญาตให้มันเสร็จสิ้น

อย่างไรก็ตามสิ่งหนึ่งที่คุณต้องทำคือสร้างแอปใน 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
ขอบคุณ Ian ส่วนใดของเอกสาร 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