-1

我有这段代码可以从 facebook 用户那里获取登录信息。它在一定程度上起作用。它以数组格式获取信息并打印出来。我如何将该数组信息传递到我的数据库中?我尝试了一些东西,但似乎没有通过。谢谢。

 <?php
require '../src/facebook.php';
$facebook = new Facebook(array(
'appId'  => '*******************',
'secret' => '*******************************',
));

 // Get User ID
  $user = $facebook->getUser();
if ($user) {
 try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
   } 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();
    }
 ?>
<!doctype html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<title>php-sdk</title>
<style>
  body {
    font-family: 'Lucida Grande', Verdana, Arial, sans-serif;
  }
  h1 a {
    text-decoration: none;
    color: #3b5998;
  }
  h1 a:hover {
    text-decoration: underline;
  }
</style>

      <a href="<?php echo $logoutUrl; ?>">Logout</a>
      <?php else: ?>
       <div>


       <a href="<?php echo $loginUrl; ?>">Login with Facebook</a>
      </div>
 <?php endif ?>

<h3>PHP Session</h3>
<pre><?php print_r($_SESSION); ?></pre>

<?php if ($user): ?>
  <h3>You</h3>
  <img src="https://graph.facebook.com/<?php echo $user; ?>/picture">

  <h3>Your User Object (/me)</h3>
  <pre><?php print_r($user_profile); ?></pre>
<?php else: ?>
  <strong><em>You are not Connected.</em></strong>
<?php endif ?>

<?
mysql_connect('localhost', '****', '****');  
mysql_select_db('***'); 
    # We have an active session; let's check if we've already registered the user  
$query = mysql_query("SELECT * FROM users WHERE oauth_provider = 'facebook' AND oauth_uid = ". $user['id']);  
$result = mysql_fetch_array($query);  

# If not, let's add it to the database 
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);  
}
session_start();
    if(!empty($user)){  
    # ...  

    if(empty($result)){  
        # ...  
    }  

    # let's set session values 
    $_SESSION['id'] = $result['id']; 
    $_SESSION['oauth_uid'] = $result['oauth_uid']; 
    $_SESSION['oauth_provider'] = $result['oauth_provider']; 
    $_SESSION['username'] = $result['username'];  
} 
if(!empty($_SESSION)){  
header("Location: login.php");  
} 

  session_start();  
if(!empty($_SESSION)){  
header("Location: done.php");  
  }
   echo 'Welcome ' . $_SESSION['username'];  
   # or..  
  echo 'Welcome ' . !empty($_SESSION) ? $_SESSION['username'] : 'guest';  
    ?>
</body>

4

1 回答 1

0

如果您给定的代码没有丢失任何内容,那么在您的代码中$user承载USER_ID$user_profile变量承载用户数据。

但是在插入过程中,您使用$user了变量:这是错误的。在插入期间使用$user_profile变量,那么您应该得到预期的结果。

谢谢

于 2012-04-11T19:52:35.900 回答