У меня есть приложение facebook iframe, которое правильно регистрирует и авторизует приложение, но getUser() работает только на первой странице. Как только пользователь нажимает ссылку на новую страницу в iframe, getUser() возвращает 0.facebook iframe app; php sdk getUser() возвращает действительный идентификатор на первой странице, но не для какой-либо другой страницы
Странно, что этот же код работает для другого приложения ... Я делаю все щелчки, которые я хочу, и getUser () возвращает действительный идентификатор.
приложение, которое не работает: https://apps.facebook.com/celestial_glory/
Тот, который делает (такой же кодовая): https://apps.facebook.com/uprisingstlouis/
Вот код, я использую:
require_once ('fb/facebook.php');
// snip... set $app_id, $secret, and $canvas_page
// first, try normal facebook getUser(). If that works, awesome.
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $secret,
));
$signed_request = $_REQUEST['signed_request'];
// Get User ID
$user = $facebook->getUser();
if ($user != '0') return 'fb=' . $user; // works once
// getUser() didn't work. Try oAuth. Maybe user needs to log in or
// authorize the game?
$auth_url = 'http://www.facebook.com/dialog/oauth?client_id='
. $app_id . '&redirect_uri=' . urlencode($canvas_page);
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
if (empty($data["user_id"])) {
echo '<a target="_top" href="' . $auth_url . '">Login to Facebook</a>';
exit;
// normally we would auto-redirect, but with a uid of 0, this just auto-redirects
// echo("<script> top.location.href='" . $auth_url . "'</script>");
} else {
return 'fb=' . $data['user_id'];
}
какие-либо идеи? У меня есть трижды проверенные идентификаторы и секреты и холсты. Если бы это было неправильно, я бы не ожидал, что ни одна страница, даже первая, не сработает.
попробовал - без изменений 8 - (((. GetUser() по-прежнему возвращает действительную информацию для первой страницы, кроме 0. –