使用facebook php sdk登录后获取用户的facebook信息


Get user's facebook info after login using facebook php sdk

我使用Facebook javascript sdk和php sdk登录用户到我的web应用程序。与javascript我有登录/出工作,我可以得到一个登录用户的公开Facebook的详细信息。

然而,当使用php时,我没有得到用户的facebook详细信息。给你一些关于这个应用的信息,当我导航到一个包含表单的特定页面时,代码会检查他们是否登录了。如果没有,则给出一个LoginUrl链接。一旦登录,我有$user_id,所以现在用户可以使用表单,但我没有得到他们的facebook详细信息保存在MySQL数据库时,表单提交。有人能告诉我该怎么做吗?我肯定有$user_id作为表单只显示,如果我有$user_id

我的代码基于https://developers.facebook.com/docs/reference/php/facebook-api/

<?php
require 'facebook.php';
//create application instance
$config = array(
'appId' => '**************',
'secret' => '****************************',
'cookie' => true);
$facebook = new Facebook($config);
$user_id = $facebook->getUser(); 
?>
//Page containing form
<div data-role="page" id="postAJourney" data-add-back-btn="true" data-back-btn-text="back" data-rel="back" data-direction="reverse" data-transition="flip" data-theme="b" >
    <div data-role="header"  data-position="fixed">
       <h1>Post A Journey</h1>
    </div>
    <div data-role="content">
       <?php if ($user_id): ?>
       <form action="add_journey.php" method="post" id="postAJourneyForm">
       <?php
       try
       {
           $access_token = $facebook->getAccessToken();
       $param_token = array('access_token' => $access_token); 
       //Proceed knowing you have a logged in user who's authenticated.
       $user_profile = $facebook->api('/me','GET',$param_token);
       echo "Name: " . $user_profile['name'];
       // store session data
       $_SESSION['fb_id'] = $user_profile['id'];
       $_SESSION['fb_name'] = $user_profile['name'];
       $_SESSION['fb_first_name'] = $user_profile['first_name'];
       $_SESSION['fb_last_name'] = $user_profile['last_name'];
       $_SESSION['fbImg'] = "https://graph.facebook.com/".$user_profile['id']."/picture";
    $_SESSION['fbLink'] = "https://www.facebook.com/".$user_profile['name'];
       }
       catch(FacebookApiException $e)
       {
       // If the user is logged out, you can have a 
       // user ID even though the access token is invalid.
       // In this case, we'll get an exception, so we'll
       // just ask the user to login again here.
       $login_url = $facebook->getLoginUrl(); 
       error_log($e->getType());
       error_log($e->getMessage());
       }
       ?>
       //jQuery Mobile Form would be here
 <?php else: ?>
 <?php // No user, print a link for the user to login
$login_url = $facebook->getLoginUrl(array(
'scope' => 'email',
'redirect_uri' => "http://localhost/share/#postAJourney"
));
 ?>
 <div>
     Login using OAuth 2.0 handled by the PHP SDK:
     <a href="<?php echo $login_url; ?>">Login with Facebook</a>
 </div>
 <?php endif ?>

/*您需要用户访问令牌,然后在Facebook/me API中传递该令牌作为参数,然后您可以获得Facebook用户登录信息。你需要从范围内的用户传递你想要的权限范围。对于检索用户访问令牌,你可以像这样使用*/

$loginUrl = $facebook->getLoginUrl(array('scope' =>' manage_pages','redirect_uri'=>'you url'));

/* make oauth url并在其中传递作用域以允许用户访问Facebook誓言页面以获得权限从Facebook重定向中获得访问令牌它将在请求中给你*/

$access_token = $facebook->getAccessToken();

$param_token = array('access_token' => $access_token);

$user_profile = $facebook->api('/me');//替换为

user_profile =美元facebook -> api("/我"、"得到"param_token美元);