Php 移动站点上的facebook oauth CSRF状态令牌与提供的令牌不匹配
我正在构建可通过移动设备访问的facebook应用程序,并在用户接受应用程序权限并返回到原始url后继续获取: CSRF状态令牌与提供的令牌不匹配 但是,我的重定向uri与发送请求的url相同。我已经检查了我的facebook应用程序设置,并且正确输入了应用程序域 这是我的密码:Php 移动站点上的facebook oauth CSRF状态令牌与提供的令牌不匹配,php,facebook,mobile,sdk,oauth,Php,Facebook,Mobile,Sdk,Oauth,我正在构建可通过移动设备访问的facebook应用程序,并在用户接受应用程序权限并返回到原始url后继续获取: CSRF状态令牌与提供的令牌不匹配 但是,我的重定向uri与发送请求的url相同。我已经检查了我的facebook应用程序设置,并且正确输入了应用程序域 这是我的密码: <?php require 'facebook/src/facebook.php'; // Create our Application instance (replace this with your app
<?php
require 'facebook/src/facebook.php';
// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId' => 'MY_APP_ID',
'secret' => 'MY_SECRET',
));
// Get User ID
$user = $facebook->getUser();
if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
$friends = $facebook->api('/me/friends');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
?>
<?php if ($user) { ?>
<?php echo $user_profile['id']; ?><br />
<pre><?php print_r($user_profile); ?></pre><br />
<?php
foreach($friends["data"] as $item){
echo $item["name"]. ' - '. $item["id"]. '<BR>';
}
?>
<?php }else{ ?>
<br />
<a href="https://www.facebook.com/dialog/oauth?client_id=MY_APP_ID&scope=email,publish_stream&display=touch&redirect_uri=<?php echo urlencode('https://www.domain.com/app/mobile.php?'); ?>">App.</a></body>
<?php } ?>
这可能没有什么用处,因为我正在使用IIS和ASP.NET会话,但我怀疑您可能看到了与我观察到的相同的不一致之处。我发现IE6和一些特定的移动浏览器存在问题,特别是UP.Browser,在重定向时没有保留会话状态。在ASP.NET中,SessionID通常存储在浏览器cookie中,其中一些移动设备不保留cookie。我看到他们在一个会话中发布了多个SessionID值。如果没有持久SessionID,它们将失去获取存储状态值的能力,整个过程将崩溃 我认为这是一个IIS问题。我将完全相同的代码移到Linux服务器上,它工作得很好。试试这个:我看到了那篇文章,这里的问题不是.htaccess。这是在启用php的IIS上。测试应用程序托管在启用php的IIS上。所以它可能与这个问题有关。