2012-05-13 46 views
5

Tôi hoàn toàn mới đối với PHP và MySQL nhưng tôi đang triển khai Facebook PHP SDK trên trang web của mình. Tất cả mọi thứ hoạt động tốt cho đến nay nhưng tôi đang đấu tranh để thêm dữ liệu người dùng vào cơ sở dữ liệu của tôi (MySQL). Mọi thứ tôi có là một số thay vì tên người dùng và oauth_uid (Tôi nhận được số 5 cho cả hai trường). Đây là mã:Facebook PHP SDK - Lưu trữ dữ liệu người dùng vào cơ sở dữ liệu MYSql

<?php 
    define('db_user','myUserName'); 
    define('db_password','myPassword'); 
    define('db_host','myHost'); 
    define('db_name','myDbName'); 

    // Connect to MySQL 
    $dbc = @mysql_connect (db_host, db_user, db_password) OR die ('Could not connect to MySQL: ' . mysql_error()); 
    // Select the correct database 
    mysql_select_db (db_name) OR die ('Could not select the database: ' . mysql_error()); 

    require 'lib/facebook.php'; 

    // Create our Application instance (replace this with your appId and secret). 
    $facebook = new Facebook(array(
    'appId' => 'MYAPPID', 
    'secret' => 'MYSECRET', 
     'cookie' => true)); 


    // Get User ID 
    $user = $facebook->getUser(); 

    // We may or may not have this data based on whether the user is logged in. 
    // 
    // If we have a $user id here, it means we know the user is logged into 
// Facebook, but we don't know if the access token is valid. An access 
// token is invalid if the user logged out of Facebook. 

    if ($user) { 
    try { 
    // Proceed knowing you have a logged in user who's authenticated. 
    $fbuid = $facebook->getUser(); 
    $user_profile = $facebook->api('/me'); 



     } catch (FacebookApiException $e) { 
     error_log($e); 
     $user = null; 
     } 
     }else{ 
     header('Location: index.php'); 

     } 
      $query = mysql_query("SELECT * FROM users WHERE oauth_provider = 'facebook' AND  oauth_uid = ". $user['id']); 
      $result = mysql_fetch_array($query); 

     if(empty($result)){ 
      $query = mysql_query("INSERT INTO users (oauth_provider, oauth_uid, username)   VALUES ('facebook', {$user['id']}, '{$user['name']}')"); 
      $query = msyql_query("SELECT * FROM users WHERE id = " . mysql_insert_id()); 
      $result = mysql_fetch_array($query); 
      } 



     // Login or logout url will be needed depending on current user state. 
     if ($user) { 
     $paramsout = array('next'=>'http://www.mywebsite.com/test/logout.php'); 
     $logoutUrl = $facebook->getLogoutUrl($paramsout); 
     } 


     ?> 

Trang trên được gọi là user_page.php và nơi người dùng được chuyển hướng sau khi đăng nhập. Tôi đã cố gắng di chuyển mã "cơ sở dữ liệu" đến index.php (nơi người dùng đăng nhập) nhưng mọi nỗ lực cho đến nay vẫn không thành công. Đây là mã cho index.php:

require 'lib/facebook.php'; 

// Create our Application instance (replace this with your appId and secret). 
    $facebook = new Facebook(array(
    'appId' => 'MYAPPID', 
    'secret' => 'MYSECRET', 
     'cookie' => true)); 


    // Get User ID 
    $user = $facebook->getUser(); 


    if ($user) { 
    try { 
     // Proceed knowing you have a logged in user who's authenticated. 
     $fbuid = $facebook->getUser(); 
     $user_profile = $facebook->api('/me'); 

     header('Location: user_page.php'); 

     } catch (FacebookApiException $e) { 
     error_log($e); 
    $user = null; 
    } 
    } 


    // Login or logout url will be needed depending on current user state. 
    if ($user) { 
     $logoutUrl = $facebook->getLogoutUrl(); 

    } else { 

     $loginUrl = $facebook->getLoginUrl(Array('scope'=> 'user_interests,user_activities,user_education_history,user_likes,user_about_me, user_birthday, user_groups, user_hometown, user_work_history, email', 
      'redirect_uri' => 'http://www.mywebpage.com/test/user_page.php') 
     ); 
      } 

      ?> 

CẬP NHẬT * vấn đề cố định ($ user_profile thay vì chỉ $ user):

$query = mysql_query("SELECT * FROM users WHERE oauth_provider = 'facebook' AND oauth_uid = ". $user_profile['id']); 
    $result = mysql_fetch_array($query); 

    if(empty($result)){ 
    $query = mysql_query("INSERT INTO users (oauth_provider, oauth_uid, username) VALUES ('facebook', {$user_profile['id']}, '{$user_profile['name']}')"); 
    $query = msyql_query("SELECT * FROM users WHERE id = " . mysql_insert_id()); 
    $result = mysql_fetch_array($query); 
    } 

Trả lời

8

dữ liệu của người dùng Facebook trong mã của bạn được lưu trữ dưới $user_profile và không phải $user.

+0

THANK YOU VERY MUCH. – mat

+0

Bạn được chào đón :) –

Các vấn đề liên quan