Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行PHP的Facebook应用程序丢失会话_Php_Facebook - Fatal编程技术网

运行PHP的Facebook应用程序丢失会话

运行PHP的Facebook应用程序丢失会话,php,facebook,Php,Facebook,我正在尝试构建一个基于PHP的Facebook应用程序。该应用程序在我自己的Web主机上的php下运行,在画布中作为iFrame 我已经包括了Facebook上最新的PHP客户端库:Facebook-PHP-sdk-94fcb13 为了授权我的应用程序中的用户,我正在尝试使用FacebookConnect,就像客户端附带的示例一样。第一次登录时一切正常,但当我按F5键重新加载页面时,会话丢失,我必须再次登录。当我在Facebook画布之外调用我的应用程序时,一切都很好 我不确定,但我认为我的浏览

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

我已经包括了Facebook上最新的PHP客户端库:Facebook-PHP-sdk-94fcb13

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

我不确定,但我认为我的浏览器(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();
}
已解决:-)

我没有在配置中设置basedomain

在“Conntect”选项卡上,必须将Basedomain设置为主机

示例:应用程序正在basedomain下运行 到myapp.com


现在cookie已正确存储。

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

如果在url中使用header()重定向、solution append.SID

标题(“诸如此类”.SID)


希望对您有所帮助。

在连接SID常量之前,您必须为querystring添加
&
字符。例如:
header('my/uri?'.SID)
header('my/uri?my=param&'.SID)
,以便代码正常工作。