应用认证刷新
我一直在尝试新的身份验证,但有时会发生第一次访问应用程序一次又一次刷新的情况。 (我的意思是当没有设置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 技术交流群。

尝试设置 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