我想知道如何在PHP SDK中使用getAccessToken()获取的访问令牌 以下是我的代码段,试图显示用户电子邮件ID以及用户活动: 当我运行此代码时,emAIL和USER ACTIVITIES是空白的,我该如何解决这个问题?
<?php
require '/home/vespanve/public_html/facebook-php-sdk/src/facebook.php';
$facebook = new Facebook(array(
'appId' => '39653698mmmmm448',
'secret' => 'd7681299469mmmmmmmmmmmmm',
));
$config = array(
'appId' => '39653698mmmmm448',
'secret' => 'd7681299469mmmmmmmmmmmmm',
);
$facebook = new Facebook($config);
$user_id = $facebook->getUser();
$access_token = $facebook->getAccessToken();
$facebook->setAccessToken($access_token);
?>
<html>
<head></head>
<body>
<?
if($user_id) {
// We have a user ID, so probably a logged in user.
// If not, we'll get an exception, which we handle below.
try {
$fql = 'SELECT name from user where uid = ' . $user_id;
$fqlmail = 'SELECT email from user where uid = ' . $user_id;
$fqlact = 'SELECT user_activities from user where uid = ' . $user_id;
$ret_obj = $facebook->api(array(
'method' => 'fql.query',
'query' => $fql,
));
$ret_obj2 = $facebook->api(array(
'method' => 'fql.query',
'access_token' => $cookie['access_token'],
'query' => $fqlmail,
));
$ret_obj3 = $facebook->api(array(
'method' => 'fql.query',
'access_token' => $cookie['access_token'],
'query' => $fqlact,
));
// FQL queries return the results in an array, so we have
// to get the user's name from the first element in the array.
echo '<pre>Name: ' . $ret_obj[0]['name'] . '</pre>';
echo '<pre>Email: ' . $ret_obj2[0]['email'] . '</pre>';
echo '<pre>Activities: ' . $ret_obj3[0]['user_activities'] . '</pre>';
$facebook->destroySession();
} 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();
echo 'Please <a href="' . $login_url . '">login.</a>';
error_log($e->getType());
error_log($e->getMessage());
}
} else {
// No user, so print a link for the user to login
$login_url = $facebook->getLoginUrl();
echo 'Please <a href="' . $login_url . '">login.</a>';
}
?>
</body>
</html>
答案 0 :(得分:3)
您需要申请扩展权限:
$params = array(
'scope' => 'email, user_activities',
'redirect_uri' => 'https://www.myapp.com/post_login_page'
);
$loginUrl = $facebook->getLoginUrl($params);
有关此内容的更多信息,请点击此处:
http://developers.facebook.com/docs/reference/php/facebook-getLoginUrl/
对于此处的权限:
http://developers.facebook.com/docs/reference/api/permissions/