facebook会话cookie问题

时间:2011-05-05 10:48:33

标签: php facebook facebook-graph-api

我正在facebook上的canvas应用程序中使用php sdk。 我有3页:index.php play.php& register.php

在索引和&我会以这种方式检查是否有会话:

$session = $facebook->getSession();

$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(array('canvas' => 1,
                                          'fbconnect' => 0,
                                          'req_perms' => 'publish_stream,email',
                                          'next' => 'register.php',
                                          'cancel_url' => 'http://www.facebook.com/apps/application.php?id=MYAPPID&perms' ));
}

if (!$me){ print("<html><head>");
print("<script type=\"text/javascript\">function redirect(){ top.location.href = \"");
print($loginUrl);
print("\"; }</script></head>");
print("<body onload=\"redirect();\">Please wait...</body></html>"); exit(); }

因此,如果我不知道用户是谁以及他的新用户,请将他指向register.php并将他的uid放入我的数据库。

我遇到的问题是有些用户可以正确看到入口页面index.php,但是当导航到play.php时,他们会被重定向到注册页面。之后,每当他们尝试进入播放页面时都会发生同样的事情。

这里有些非常错误。我已经尝试过清除cookie,但似乎没有任何效果。

1 个答案:

答案 0 :(得分:0)

我可能认为$facebook->api(...)可以返回负面积极值(即。返回一个值为TRUE的值,但实际上不是,如字符串'UNAUTHORIZED',或者空数组)。仅依赖于not运算符('!')可能不是那么可靠,我会检查返回类型(虽然我不知道API并且不能告诉你它是什么)

最好的办法是var_dump ( $facebook->api('/me') ) ;来查看它实际返回的内容。你也可以尝试一个正确的测试,而不仅仅是非操作符和命令,所以而不是;

if ( $me ) { ... }

尝试;

if ( is_object ( $me ) ) { ... }
if ( is_array ( $me ) ) { ... }
if ( ! empty ( $me ) ) { ... }

或者您可以通过$ facebook-&gt; api('/ me')测试的任何其他内容,甚至是特定类似的内容;

if ( $me !=== NULL ) { ... }

无论如何,我确定您的问题在于如何测试返回数据的业务逻辑。