我已经登录了,看起来好像在哪里可以登录,接受应用程序(第一次),然后显示用户信息,如名称/图片等。Facebook页面刷新后PHP-SDK似乎失去了用户ID
但是,当我刷新页面时,userid会回到0,我必须再次登录 - 我不确定问题出在哪里,每当页面加载时我必须重新启动它或什么?我不知道,我会张贴一些代码 - 因为他们是一群独立的文件可能是艰难的:
fb_login.php -
<?php
require_once("fb_login/facebook.php");
$facebook = new Facebook(array(
'appId' => 'APP_ID',
'secret'=> 'APP_SECRET',
'cookie'=> 'true'
));
$userId = $facebook->getUser();
if ($userId) {
$userId = $facebook->getUser();
echo("userID is: $userId");
}
else{
header("Location: {$loginURL}");
echo("userId is: $userId");
}
?>
navbar.php -
<?php
if($userId){
try {
$user_profile = $facebook->api('/me','GET');
echo '<li><a href="#">Welcome: ' . $user_profile['name'] . '</a></li>';
echo '<li><img src="https://graph.facebook.com/' . $user_profile['username'] . '/picture"><li>';
echo '<li class="divider-vertical"></li>';
} catch (FacebookApiException $e) {
$login_url = $facebook->getLoginUrl();
echo '<li>Please <a href="' . $login_url . '">login.</a></li>';
error_log($e->getType());
error_log($e->getMessage());
}
}
else{
echo '<li><a href="newUser.php">Sign Up</a></li>
<li class="divider-vertical"></li>';
}
?>
<?php
if ($userId) {
// echo("userID is: $userId");
// $params = array('next' => 'http://localhost/bcbooks-repo/index_new.php');
$logoutUrl = $facebook->getLogoutUrl(); // $params is optional.
echo '<li><a href="' . $logoutUrl . '">Log Out</a></li>';
$facebook->destroySession();
}
else{?>
<?php
$userId = $facebook->getUser();
$accessToken = $facebook->getAccessToken();
$params = array(
'scope' => 'read_stream, friends_likes',
'redirect_uri' => 'http://localhost/bcbooks-repo/index_new.php'
);
$loginUrl = $facebook->getLoginUrl($params);
echo '<a href="' . $loginUrl . '" class="btn btn-primary btn-block" type="button" id="sign-in-facebook">Sign In with Facebook</a>';
?>
<?php } ?>
指数.PHP -
<?php
require_once 'inc/FB_login.php';
require_once 'inc/navbar.php'; ?>
已登录 -
页面刷新后
控制台导致
似乎很遗憾 - UserId在刷新后仍然恢复为0 – Kevin 2013-03-26 00:52:53
实际上它似乎陷入了某种循环并且不断刷新/每秒重新加载页面几次 – Kevin 2013-03-26 02:32:07
尝试将您的调用删除到标头($ loginUrl)。我认为如果身份验证尚未完成,它可能会继续将它们发送到您的代码中的登录网址 – TommyBs 2013-03-26 07:37:41