我做了一些搜索,但没有发现任何与我的问题有关的内容.
我目前正在尝试在我的网站上实现Facebook登录,并且由于htaccess mod重写URL,我遇到登录验证问题?
代码工作得很好,如果我使用它没有mod重写规则,我会登录,如:
domain.com/view_webhosting.php?webhosting=name
Run Code Online (Sandbox Code Playgroud)
但是一旦我转到mod重写URL
domain.com/webhosting-name/
Run Code Online (Sandbox Code Playgroud)
然后它只是不起作用并抛出错误"CSRF状态令牌与提供的不匹配".
在htaccess文件中它看起来像这样
RewriteRule ^webhosting-([a-z_0-9-]+)/$ /view_webhosting.php?webhosting=$1 [L]
Run Code Online (Sandbox Code Playgroud)
任何人都有这样的问题的解决方案?我正在使用Facebook SDK v3.1.1
我知道有关"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)