【问题标题】:Facebook Application with PHP running losing session使用 PHP 运行的 Facebook 应用程序正在丢失会话
【发布时间】:2010-05-09 04:57:54
【问题描述】:

我正在尝试构建一个基于 PHP 的 Facebook 应用程序。该应用程序在我自己的 Web 主机上的 php 下作为 iFrame 在 Canvas 内运行。

我已包含来自 Facebook 的最新 PHP 客户端库:facebook-php-sdk-94fcb13

要在我的应用程序中授权用户,我正在尝试使用 Facebook Connect,就像客户端附带的示例一样。第一次登录时一切正常,但是当我按 F5 键重新加载页面时,会话丢失,我必须再次登录。当我在 Facebook Canvas 之外调用我的应用程序时,一切都很好。

我不确定,但我认为我的浏览器(Chrome/FireFox - Ubuntu)不允许在 iFrame 中存储 cookie。

有人知道这个问题的解决方案吗?以下是部分源代码:

$facebook = new Facebook(array(
    'appId'  => 'x',
    'secret' => 'x',
    'cookie' => 'true',
));

$session = $facebook->getSession();
$facebook->setSession($session);


$me = null;
// Session based API call.
if ($session) {
  try {
    $uid = $facebook->getUser();
    $me = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
  }
}

// login or logout url will be needed depending on current user state.
if ($me) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl();
}

【问题讨论】:

    标签: php facebook


    【解决方案1】:

    解决了:-)

    我错过了在配置中设置基域。

    在“连接”选项卡上,您必须将 Basedomain 设置为您的主机。

    示例:应用程序在http://myapp.com/facebook/html 下运行而不是设置基域 到 myapp.com

    现在 cookie 已正确存储。

    【讨论】:

      【解决方案2】:

      php 通过 cookie 值传递会话 id,如果无法发送,则通过 *.php?phpsessid 等 get 参数发送......

      如果你使用 header() 重定向会丢失,解决方案在 url 中附加 .SID,

      喜欢

      header("blah blah".SID);

      希望对你有帮助..

      【讨论】:

      • 在连接 SID 常量之前,您必须为查询字符串添加 ?& 字符。即:header('my/uri?'.SID)header('my/uri?my=param&'.SID) 以使您的代码正常工作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-28
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-10
      相关资源
      最近更新 更多