我想让用户通过Facebook登录。我正在使用此代码:
<?php
require 'include/facebook.php';
require 'include/fbconfig.php';
require 'include/user.php';
$facebook = new Facebook(array(
'appId' => APP_ID,
'secret' => APP_SECRET,
'cookie' => true
));
$session = $facebook->getSession();
if (!empty($session)) {
# Active session, let's try getting the user id (getUser()) and user info (api->('/me'))
try {
$uid = $facebook->getUser();
$user = $facebook->api('/me');
} catch (Exception $e) {
}
if (!empty($user)) {
# User info ok? Let's print it (Here we will be adding the login and registering routines)
echo '<pre>';
print_r($user);
echo '</pre><br/>';
$username = $user['name'];
$user = new User();
// check user method insert login information to my database and return the result
$userdata = $user->checkUser($uid, 'facebook', $username);
if(!empty($userdata)){
session_start();
$_SESSION['id'] = $userdata['id'];
$_SESSION['oauth_id'] = $uid;
$_SESSION['username'] = $userdata['username'];
$_SESSION['oauth_provider'] = $userdata['oauth_provider'];
header("Location: test.php");
}
} else {
# For testing purposes, if there was an error, let's kill the script
die("There was an error.");
}
} else {
# There's no active session, let's generate one
$params = array(
'scope' => 'email'
);
$login_url = $facebook->getLoginUrl($params);
header("Location: " . $login_url);
}
?>
运行此页面时的问题,它会将我重定向到Facebook主页(到我的帐户)。
请,任何想法??
你的帖子没有太多的上下文来解释代码部分;请更清楚地解释一下你的情景。
答案 0 :(得分:6)
您使用的是最新的PHP SDK吗?从here获取最新的SDK,然后重试..
<强> [EDITED] 强>
将所有对getSession()
的引用替换为getUser()
示例:
$session = $facebook->getSession();
它应该说:
$session = $facebook->getUser();
答案 1 :(得分:2)
这肯定会起作用 -
$user=NULL ;
$user = $facebook->getUser();
if($user)
{
$loginUrl = $facebook->getLoginUrl(
array(
'scope' => 'email',
'redirect_uri' => 'https://appurl'
)
);
}
答案 2 :(得分:1)
如果您已登录,则不会进入登录页面。
尝试注销并检查您的代码是否有效。