登录后使用facebook的sdk获取用户的Facebook信息
我使用Facebook的JavaScript的SDK和PHP SDK登录用户到我的网络应用程序。使用JavaScript我有登录/外出工作,我可以得到登录用户的公开Facebook的详细信息。登录后使用facebook的sdk获取用户的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上该令牌/我作为API参数,那么你可以得到登录信息的Facebook用户。你需要在范围内传递你想要的用户权限范围。为了获取用户访问令牌,你可以这样使用*/
$ loginUrl = $ facebook-> getLoginUrl(array('scope'=>' manage_pages','redirect_uri'=>'you url'));
/*取得OAuth的网址,并通过在该范围内,以允许用户在Facebook页面宣誓许可获取来自Facebook的访问令牌重定向它会给你的请求*/
$ =的access_token $ facebook- > getAccessToken();
$ param_token = array('access_token'=> $ access_token);
$ user_profile = $ facebook-> api('/ me'); //替换为该行
$ user_profile = $ facebook-> api('/ me','GET',$ param_token);
感谢您的帮助。我更新了我的代码,但没有更改。 –
难道你不能通过Id调用API来获取用户详细信息吗? – EaterOfCode
请参阅:http://developers.facebook.com/docs/reference/rest/users.getInfo/ – EaterOfCode
首先,我使用getUser()检查用户是否已登录,然后使用$ user_profile = $ facebook-> api(' /我');我应该得到用户的详细信息。 REST已被弃用 –