使用php SDK刷新页面时facebook登录不起作用
我已经为网站准备了一个facebook登录,facebook身份验证工作,重定向到desire页面也工作,但当我再次点击页面刷新时,它会要求facebook登录没有用户名,并且即使我通过身份验证也没有检测到注销 下面是我的代码facebook sdk是3.1.1使用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
<?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" ?>
<a href="<?php echo $logoutUrl; ?>">Logout</a>
<?php
session_destroy();
}
?>
您可以查看实时演示url我认为问题可能在于code
参数仍在url中–当您重新加载该页面时,SDK将尝试再次将该代码交换为令牌,但这是不可能的(只能交换一次),因此,您将无法获得有效的用户。好的,那么我是否应该在facebook应用程序设置中更改为查询字符串?我宁愿尝试重定向到不带code参数的URL(当然,在SDK将其交换为访问令牌之后)。