0

我一直在尝试新的身份验证,但有时会发生在第一次访问时应用程序一次又一次地刷新。(我的意思是当没有设置 cookie 时......第一次或例如在浏览器重新启动后)

我有这个验证码:

require_once './facebook/facebook.php';
$facebook = new Facebook(array(
          'appId'  => $fbconfig['appid'],
          'secret' => $fbconfig['secret'], 
          'fileUpload' => $fbconfig['fileUpload'],
          'cookie' => true,
        ));

$uid = $facebook->getUser();

if($uid)
{
  session_start();
  if(!isset($_SESSION['me']))
  {
     try
        {
           $_SESSION['me'] = fql("select name, sex, pic_big, locale, email, birthday from user where uid=me()",$facebook);
           $_SESSION['me'] = $_SESSION['me'][0];
        }
        catch(Exception $o)
        {
          print_r($o);
        }
  }
}
else
{
            $loginUrl   = $facebook->getLoginUrl(
                array(
                    'scope'         => $fbconfig['perms'],
                    'redirect_uri'  => $fbconfig['canvas'],
                )
             ); 
            echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
            exit;
}

所以错误是 $facebook->getUser(); 它是 0。但是当我停止刷新并再次去那里时......它工作正常。

4

1 回答 1

0

Try setting P3P headers. Some browsers won't allow a page in an iframe to set a cookie unless they are specified.

Something like this as the first line in the PHP should do it.

header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');

More info on P3P here

http://en.wikipedia.org/wiki/P3P

于 2011-11-27T17:05:18.707 回答