2012-05-13 5 views
5

Я совершенно не знаком с PHP и MySQL, но я реализую PHP SDK на моем сайте. Пока все работает нормально, но я пытаюсь добавить данные пользователя в мою базу данных (MySQL). Все, что у меня есть, это число вместо имени пользователя и oauth_uid (я получаю номер 5 для обоих полей). Это код:Facebook PHP SDK - Сохранение пользовательских данных в базе данных 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); 
     } 


     ?> 

выше страница называется user_page.php и где пользователь перенаправляется после входа в систему. Я попытался переместить код базы данных в index.php (где пользователь вводит логин), но все усилия до сих пор не увенчались успехом. Это код для 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') 
     ); 
      } 

      ?> 

UPDATE * ПРОБЛЕМА FIXED ($ user_profile вместо того, чтобы только $ пользователю):

$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); 
    } 

ответ

8

Данные пользователя Facebook в вашем коде, хранится под $user_profile и не $user.

+0

СПАСИБО ВАС ОЧЕНЬ. – mat

+0

Добро пожаловать :) –

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