应用认证刷新

发布于 12-18 09:23 字数 1201 浏览 3 评论 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。但是当我停止刷新并再次去那里时..它工作正常。

i have been trying new authentication, but sometimes happens that on first acces app is refreshing again and again. (I mean when no cookies are set..first time ever or for example after browser restart)

I have this code for authentication:

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;
}

So error is $facebook->getUser(); it is 0. but when i stop refreshing and go there again..it works properly.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冰之心2024-12-25 09:23:33

尝试设置 P3P 标头。除非指定,否则某些浏览器不允许 iframe 中的页面设置 cookie。

PHP 中的第一行应该是这样的。

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

有关 P3P 的更多信息,请参见

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文