CSRF状态令牌与提供的令牌不匹配

Nic*_*ick 4 php facebook facebook-graph-api

我知道有关"CSRF状态令牌与提供的令牌不匹配"问题的stackoverflow上有大量帖子.但是,我试过并没有解决这个问题.你能看一下我下面的代码吗?请告诉我您的想法以及如何解决问题.我已经更新到最新的PHP SDK版本.

<?
require_once ('src/facebook.php');
require_once ('src/fbconfig.php');

//Facebook Authentication part
$user_id = $facebook->getUser();
$loginUrl = $facebook->getLoginUrl(array(
    'scope' => 'publish_stream')
);

if ($user_id) {
    $_SESSION['user_id'] = $user_id;
    echo "<script>top.location.href = 'https://www.example.com/app-folder/welcome'</script>"; 
    exit;
} 
?>
    .
    .
<body>
<?php echo '<a href="'.$loginUrl.'" target="_top">Please login</a>'; ?>
    .
    .
</body>
Run Code Online (Sandbox Code Playgroud)

Tch*_*upi 11

getLoginUrl()生成一个新令牌.如果您的用户已经登录(使用$user_id = $facebook->getUser()),您最终将获得2个令牌.

如果用户已经过身份验证,请不要询问$ loginUrl.

$user_id = $facebook->getUser();

if ($user_id) {
    $_SESSION['user_id'] = $user_id;
    echo "<script>top.location.href = 'https://www.example.com/app-folder/welcome'</script>"; 
    exit;
} else {
    $loginUrl = $facebook->getLoginUrl(array(
        'scope' => 'publish_stream')
    );
}
Run Code Online (Sandbox Code Playgroud)

?>

  • 当用户已经登录时,getuser()有时会返回0或null吗?这会导致用户再次登录? (2认同)