我实际上试图找到一个解决方案,但没有,我希望我会在这里找到解决方案!
我在我的网站上使用facebook connect,一切正常 当我登录Facebook时,我会通过脸书连接自动登录我的网站,反之亦然。
现在我尝试将其设为facebook应用程序,但我遇到以下问题: 我尝试在facebook iframe内运行,但不幸的是我没有自动登录。有时它有效,有时没有任何反应,有时我收到此消息:(无法获得Facebook会话。您的服务器可能无法安全地进行Facebook连接到用户以检索信息。)
我正在使用的一些代码:
include 'includes/facebook.php';
$facebook = new Facebook(array(
'appId' => $setting['facebook_appid'],
'secret' => $setting['facebook_secret'],
'cookie' => true, // enable optional cookie support
));
if ($facebook->getUser()) {
$facebook_session = 1;
try {
$fb_user = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
}
function get_facebook_cookie($app_id, $application_secret) {
$args = array();
parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args);
ksort($args);
$payload = '';
foreach ($args as $key => $value) {
if ($key != 'sig') {
$payload .= $key . '=' . $value;
}
}
if (md5($payload . $application_secret) != $args['sig']) {
return null;
}
return $args;
}
$cookie = get_facebook_cookie($setting['facebook_appid'], $setting['facebook_secret']);
$open = @file_get_contents('https://graph.facebook.com/me?access_token='.$cookie['access_token']);
if ($open != FALSE) {
$fbdata = json_decode($open);
$fb_user = array();
foreach($fbdata as $key => $fbdata2) {
$fb_user[$key] = $fbdata2;
}
}
}
else {
$facebook_session = 0;
}
ps:我当然使用安全画布网址
请帮忙! 提前致谢
答案 0 :(得分:0)
我的Facebook Connect登录工作正常,但不在Facebook Canvas / iFrame中,它根本不起作用。我不得不改变我的登录方法(现在facebook用户必须能够在你的应用程序中自动登录),基本上对我有用的是:How to authorize Facebook app using redirect in canvas?
这就是我以前用过的(我使用CakePHP):
$params = array(
'scope' => 'email'
);
$loginUrl = $facebook->getLoginUrl($params);
$this->redirect($loginUrl);
我把它改成了非常好用的东西:
$loginUrl = $facebook->getLoginUrl(
array(
'canvas' => 1,
'fbconnect' => 0,
'req_perms' => 'publish_stream'
)
);
echo '<script>top.location="'.$loginUrl.'";</script>';
我不确定这是否真的对你有帮助,因为你的应用程序似乎比我的更复杂,但也许你可以通过这个答案或我链接的帖子解决你的问题。