Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 移动站点上的facebook oauth CSRF状态令牌与提供的令牌不匹配_Php_Facebook_Mobile_Sdk_Oauth - Fatal编程技术网

Php 移动站点上的facebook oauth CSRF状态令牌与提供的令牌不匹配

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

我正在构建可通过移动设备访问的facebook应用程序,并在用户接受应用程序权限并返回到原始url后继续获取:

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

但是,我的重定向uri与发送请求的url相同。我已经检查了我的facebook应用程序设置,并且正确输入了应用程序域

这是我的密码:

<?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上。所以它可能与这个问题有关。