Facebook PHP SDK getUser() 在 Windows 上的 Safari 中返回 0


Facebook PHP SDK getUser() returning 0 in Safari on Windows

我正在开发一个Facebook iframe应用程序。我同时使用PHP SDK和JS软件开发工具包。在我的索引文件中,我调用 PHP SDK 以获取有关用户的一些信息。这包括 getUser(( 函数,它始终在索引中工作。

但是,我还有许多其他PHP文件,当用户单击某些链接时,我用它来填充索引中的div。我在这些文件中的每个文件中都使用FB PHP SDK,以确保用户仍然登录到FB。也就是说,当这些文件被执行时,我调用getUser((函数来获取用户的ID并确定该人是否仍在登录。我通过jQuery的load((函数将这些PHP文件的内容注入索引中的div中。

这在 FFox、Opera、IE 和 Chrome 下工作得很好,但在 Safari 的某些安装下则不然。 具体来说,我在 5.1.5 (7534.55.3( 中遇到了重大问题。当PHP文件被jQuery加载函数在这个版本的Safari下调用时,getUser((函数似乎总是返回0(零(。我假设这与会话cookie有关?我真的不知道,希望这里有人能为我阐明这一点。谢谢。。

你可以把它添加到你的网站:

<?php
$uid = $facebook->getUser();
if ($uid==0) {
    $params = array(
      'scope' => 'read_stream, friends_likes',
      'redirect_uri' => 'https://www.myapp.com/post_login_page'
    );
    $loginUrl = $facebook->getLoginUrl($params);
    echo '<a href="'.$loginUrl.'">You need first to Login</a>';
    exit();
} else {
     //Continue your site code
} 

?>

不确定这是否是一个问题,但它影响了我的 Safari FB 应用程序开发一段时间。查看此 SA 答案以修复它,我几乎完全遵循它并且它有效。在 safari 5.1.5 中 iframe 上缺少 cookie