使用php SDK刷新页面时facebook登录不起作用

使用php SDK刷新页面时facebook登录不起作用,php,facebook,Php,Facebook,我已经为网站准备了一个facebook登录,facebook身份验证工作,重定向到desire页面也工作,但当我再次点击页面刷新时,它会要求facebook登录没有用户名,并且即使我通过身份验证也没有检测到注销 下面是我的代码facebook sdk是3.1.1 <?php if(empty($_SESSION)) { session_start(); } require 'config_facebook.php'; if(isset($_SESSION['url'])) { $url

我已经为网站准备了一个facebook登录,facebook身份验证工作,重定向到desire页面也工作,但当我再次点击页面刷新时,它会要求facebook登录没有用户名,并且即使我通过身份验证也没有检测到注销

下面是我的代码facebook sdk是3.1.1

<?php
if(empty($_SESSION)) {
session_start();
}
require 'config_facebook.php';
if(isset($_SESSION['url'])) 
{
$url = $_SESSION['url']; 
$uri = 'http://'.$_SERVER['HTTP_HOST'].$_SESSION['url']; 
} 
else
{
$url =  $_SERVER['REQUEST_URI']; 
$uri = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
}

require 'lib/facebook/facebook.php';
$facebook = new Facebook(array(
'appId'     =>  $appID,
'secret'    => $appSecret,
'cookie' => true
));
//get the user facebook id      
$user = $facebook->getUser();
$access_token = $facebook->getAccessToken();


if($user)
{
    try {
        //get the facebook user profile data
        $userdata = $facebook->api('/me');
        }
        catch(FacebookApiException $e){
        error_log($e);
        $user = NULL;
    }       

$logoutUrl = $facebook->getLogoutUrl(); 
}
else 
{
$loginUrl = $facebook->getLoginUrl($params = array('scope' => "email,publish_stream",'redirect_uri' => "$uri"));
}

if(!empty($userdata))
{
$fid = $userdata['id'];
$name = $userdata['name'];
$email = $userdata['email'];
$flink = $userdata['link'];
$flocation=mysql_real_escape_string($userdata['location']['name']);

$query = mysql_query("SELECT * FROM user WHERE email = '$email' AND facebook_id = '$fid' "); 
$count=mysql_num_rows($query);
}

if($user && $count == 0)
{
$run = "INSERT INTO `user` (id,name,email,gender,location,profilelink) 
VALUES ('$userdata[id]','$userdata[name]','$email','$userdata[gender]','$flocation','$flink')";
$res = mysql_query($run);

try 
{
$news = array('message'     => 'Thank You for Joining.');

        $post = $facebook->api("/me/feed","POST",$news);

}
        catch (FacebookApiException $e) {
           $result = $e->getResult();
  }
}
?>
<?php
if(!$user)
{
?>
<a href="<?php echo $loginUrl; ?>"><img src="images/facebook.png" alt="Facebook Login" /></a>
<?php
}
else
{
?>
<?php echo "$name" ?>&nbsp;
<a href="<?php echo $logoutUrl; ?>">Logout</a>
<?php
session_destroy();
}
?>


您可以查看实时演示url我认为问题可能在于
code
参数仍在url中–当您重新加载该页面时,SDK将尝试再次将该代码交换为令牌,但这是不可能的(只能交换一次),因此,您将无法获得有效的用户。好的,那么我是否应该在facebook应用程序设置中更改为查询字符串?我宁愿尝试重定向到不带code参数的URL(当然,在SDK将其交换为访问令牌之后)。