2013-03-24 2 views
1

이렇게 잘 작동합니다 ...하지만 페이지를 두 번 새로 고치거나이 스크립트를 포함하는 두 페이지를 클릭하면 빨리) 그것은이 오류를 제공합니다 OAuthException : 현재 사용자에 대한 정보를 쿼리하는 데 활성 액세스 토큰을 사용해야합니다. 아이디어가 있으십니까?같은 facebook 문제 ... OAuthException : 현재 사용자에 대한 정보를 쿼리하는 데 활성 액세스 토큰을 사용해야합니다

<?php 

    $app_id = '***************'; 
    $app_secret = '**************'; 
    $app_namespace = '****************'; 

    $app_url = 'http://apps.facebook.com/' . $app_namespace . '/'; 
    $scope = 'email,publish_actions'; 

    // Init the Facebook SDK 
    $facebook = new Facebook(array(
    'appId' => $app_id, 
    'secret' => $app_secret, 
    )); 

    // Get the current user 
    $user = $facebook->getUser(); 

    // If the user has not installed the app, redirect them to the Login Dialog 

    if (!$user) { 
    $loginUrl = $facebook->getLoginUrl(array(
     'scope' => $scope, 
     'redirect_uri' => $app_url, 
    )); 

    print('<script> top.location.href=\'' . $loginUrl . '\'</script>'); 
    } 

if ($user) { 
    try { 
    // Proceed knowing you have a logged in user who's authenticated. 
    $user_profile = $facebook->api('/me', 'POST'); 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    $user = null; 
    } 
} 
//<img src="https://graph.facebook.com/?php echo $user; ?/picture"> 
//?php print_r($user_profile); ? 
?> 

답변

1

개인적으로 직접 access_token을 (를) 쉽게 관리 할 수 ​​있습니다. 페이스 북의 그래프 API는 access_token이 전달되도록 요구함으로써 보호 된 엔드 포인트를 보호합니다. PHP SDK는 이것을 추상화하지만 때때로 이 작동하지 않기 때문에 페이스 북 처리에 익숙하지 않았습니다.. 도서관이 나쁘다고 말하는 것은 아니지만 정확하게 사용하지 않았습니다.. 이주의 사항을 명심하십시오.

페이스 북의 캔버스 응용 프로그램으로 작업하는 것처럼 보입니다. 사용자가 처음으로 성공적으로 인증하면 Facebook은 $_GETaccess_token을 보냅니다. 이 시점에서 으로 데이터베이스에 저장해야합니다. 그 액세스 토큰은 3 개월 정도 유효합니다. 지점에서

, 그때부터, 당신은 호출 매개 변수에 access_token에 전달할 수 있습니다 :

try { 
    $user_profile = $facebook->api('/me', 'POST', array(
     "access_token" => '' // access token goes here 
    )); 
} catch (FacebookApiException $e) { 
    // error handling 
} 

페이스 북은 당신이 /me 자원을 호출하기 위해 액세스 토큰을 필요로하는 오류를 반환하는 점을 감안 , $facebook->getUser(); 뭔가를 반환하는 것 같습니다. 그것이 무엇인지 다시 확인하고 싶을 수 있습니다. 혼란

if (!conditional) { 
    // do something 
} 
if (conditional) { 
    // do something else 
} 

:


내가 여기있는 동안

, 당신은이 논리를 사용하고 있습니다. else :

if (conditional) { 
    // do something 
} else { 
    // do something else 
} 
관련 문제