2012-02-17 202 views
1

我打算將Facebook登錄按鈕整合到我的網站中。現在我有一個Facebook登錄按鈕,當按下時,彈出一個新窗口,要求獲得訪問用戶的基本信息和電子郵件的權限。到目前爲止所做的一切都來自http://developers.facebook.com/docs/guides/web/#login。我正在使用PHP(使用Codeigniter框架,Tank auth認證庫)和jQuery。Facebook登錄混淆

問題:現在將登錄按鈕添加到我的網站後,Facebook不再有任何關於如何進行的說明?

  1. 我如何從Facebook獲取用戶信息插入到我的數據庫(如果第一次訪問)
  2. 我如何確定用戶已經允許我的網站才能訪問他的信息?
  3. 如果已經授予訪問權限,如何將用戶重定向到新頁面?

據我所知,最近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> 
+0

因此您正在使用javascript登錄Facebook嗎?或PHP?請添加登錄代碼。 – 2012-02-17 06:17:40

+0

用代碼更新了原始問題。我不確定應該在哪裏使用Javascript或PHP SDK?或者我需要兩個?真的很困惑,對不起 – Nyxynyx 2012-02-17 14:06:08

+0

相同的布爾開發,你必須在這裏提供Facebook登錄代碼,以便它可以排除故障.. – 2012-02-17 14:39:39

回答

2

快速編輯:轉到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'"); 

     ?> 

希望這有助於!

+0

謝謝Ian,Facebook PHP SDK文檔的哪一部分告訴我們,我們可以從'$ user_profile ['last_name'];'etc獲取姓氏等等? – Nyxynyx 2012-02-17 14:25:34

+0

@Nyxynyx沒問題:-)如果這是正確的答案不要忘記把它打勾,如果它適合你=)。我花了這麼長時間才發現這些參數是不真實的!最後,我看着PHP版本打印出來的數組,你會看到像[first_name] = ian [last_name] = blahh [gender] = male等等,你在[]中看到的是他們認爲他們他們是params。但我不確定官方文檔的位置,在舊的SDK中有一些清晰的文檔,但不再是: - /我還建議看看facebook網站上的圖表api部分。 – Jack4 2012-02-17 14:29:07