【发布时间】:2011-09-21 17:22:35
【问题描述】:
我有一个 facebook 应用程序,它通过 PHP-SDK 连接到 facebook。
$facebook = new Facebook(array(
'appId' => FACEBOOK_APP_ID,
'secret' => FACEBOOK_SECRET_KEY,
));
$user = $facebook->getUser();
if ($user) {
try {
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
一切都很好,我让浏览器打开并且不响应我的应用程序。过了一会儿,我尝试通过 ajax 在应用程序中发送表单。似乎会话无效? Facebook 将再次授权我的应用程序将 ajax url 加载到浏览器地址栏中,并将新会话参数附加到该 url 并破坏应用程序。
我可以做些什么来假装 facebook “重新加载”或将 ajax/form 操作传递到浏览器地址栏?在处理每个请求之前,我都会检查用户是否仍然处于活动状态,这可能是问题所在?
$user = $facebook->getUser();
if ($user != 0) {
if($this->userProfile == null){
try {
// Proceed knowing you have a logged in user who's authenticated.
$this->userProfile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
}else{
$this->userProfile = null;
}
if ($this->userProfile != null) {
$filterChain->run();
} else {
$loginUrl = $facebook->getLoginUrl(
array('scope' => 'publish_stream','redirect_uri' => 'REDIRECT_URI'));
}
echo("<script> top.location.href='" . $loginUrl . "'</script>");
我应该使用其他方法吗? 提前致谢!
【问题讨论】:
标签: facebook session iframe facebook-graph-api facebook-php-sdk