제대로 로그인하고 앱을 인증하는 facebook iframe 앱이 있지만 getUser()는 첫 번째 페이지에서만 작동합니다. 사용자가 iframe 내에서 새 페이지로 연결되는 링크를 클릭하면 getUser()는 0을 반환합니다.facebook iframe 앱; php sdk getUser()는 페이지 1에서 유효한 ID를 반환하지만 다른 페이지에서는 그렇지 않습니다.
이 코드가 다른 앱에서 작동하는 것은 이상합니다. 원하는 모든 클릭을하고 getUser) 유효한 ID를 반환합니다. 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'];
}
어떤 아이디어가 작동하지 않습니다
응용? 나는 앱 ID와 비밀 및 캔버스 페이지를 세 번 확인했습니다. 그것들이 틀렸다면, 첫 번째 페이지조차도 작동하지 않을 것으로 기대합니다. 이 (캔버스 페이지 URL에 페이스 북이 POST'ed) signed_request
에서 사용자를 얻을 수 있기 때문에 첫 페이지에
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $secret,
'cookie' => true // this!
));
getUser
작품 :에
시도해 보았습니다. - 변경 없음 8 - (((getUser()는 여전히 첫 번째 페이지에는 유효한 정보를 반환하지만 그 이상은 0을 반환합니다. –