Это связано с тем, что переменная code
никогда не передается на содержимое вкладки iFrame через URL-адрес страницы вентилятора / вкладки приложения (если вы используете URL-адрес вкладки приложения, никакие дополнительные параметры не передаются в URL-адрес iFrame). Таким образом, следуя примеру кода выше, перенаправление JavaScript в диалог аутентификации всегда будет передаваться клиентскому браузеру.
Вы должны использовать последнюю версию PHP SDK (v3.1.1) с JavaScript SDK для аутентификации:
http://developers.facebook.com/blog/post/534/
Пример кода из поста выше:
<code>require 'php-sdk/src/facebook.php';
$facebook = new Facebook(array(
'appId' => 'YOUR_APP_ID',
'secret' => 'YOUR_APP_SECRET',
));
// See if there is a user from a cookie
$user = $facebook->getUser();
if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
echo '<pre>'.htmlspecialchars(print_r($e, true)).'
';
$ user = null;
}
}
?>
<! DOCTYPE html>
<? php if ($ user_profile) {?>
Ваш профиль пользователя
<?php print htmlspecialchars(print_r($user_profile, true)) ?>
<? php} else {?>
<Фб: войти кнопки> </ FB: войти кнопки>
<? php}?>
window.fbAsyncInit = function () {
FB.init ({
appId: '<? php echo $ facebook-> getAppID ()?>',
cookie: правда,
xfbml: true,
oauth: правда
});
FB.Event.subscribe ('auth.login', function (response) {
window.location.reload ();
});
FB.Event.subscribe ('auth.logout', function (response) {
window.location.reload ();
});
};
(function () {
var e = document.createElement ('script'); e.async = true;
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
document.getElementById ( 'FB-корень') AppendChild (е).
} ());