5

próbuję uruchomić kod przykładowy Facebook connect, które pobrałem z http://thinkdiff.net/facebook/php-sdk-3-0-graph-api-base-facebook-connect-tutorial/
otrzymuję komunikat o błędzie:OAuthException: Aktywnie token dostępu musi być użyty do uzyskania informacji o aktualnym użytkownikiem

[error] => Array 
      (
       [message] => An active access token must be used to query information about the current user. 
       [type] => OAuthException 
       [code] => 2500 
      ) 

można spróbować na mojej stronie internetowej: http://facebook.oliverjordan.net/thinkdiff

Oto kod fbmain.php:

<?php 

//facebook application 
$fbconfig['appid' ]  = "463007877113xxx"; 
$fbconfig['secret']  = "-sensor-"; 
$fbconfig['baseurl'] = "http://facebook.oliverjordan.net/thinkdiff/index.php"; //"http://thinkdiff.net/demo/newfbconnect1/php/sdk3/index.php"; 

// 
if (isset($_GET['request_ids'])){ 
    //user comes from invitation 
    //track them if you need 
} 

$user   = null; //facebook user uid 
try{ 
    include_once "facebook.php"; 
} 
catch(Exception $o){ 
    error_log($o); 
} 
// Create our Application instance. 
$facebook = new Facebook(array(
    'appId' => $fbconfig['appid'], 
    'secret' => $fbconfig['secret'], 
    'cookie' => true, 
)); 

//Facebook Authentication part 
$user  = $facebook->getUser(); 
// We may or may not have this data based 
// on whether the user is logged in. 
// If we have a $user id here, it means we know 
// the user is logged into 
// Facebook, but we don’t know if the access token is valid. An access 
// token is invalid if the user logged out of Facebook. 


$loginUrl = $facebook->getLoginUrl(
     array(
      'scope'   => 'email,offline_access,publish_stream,user_birthday,user_location,user_work_history,user_about_me,user_hometown', 
      'redirect_uri' => $fbconfig['baseurl'] 
     ) 
); 

$logoutUrl = $facebook->getLogoutUrl(); 


if ($user) { 
    try { 
    // Proceed knowing you have a logged in user who's authenticated. 
    $user_profile = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    //you should use error_log($e); instead of printing the info on browser 
    d($e); // d is a debug function defined at the end of this file 
    $user = null; 
    } 
} 


//if user is logged in and session is valid. 
if ($user){ 
    //get user basic description 
    $userInfo   = $facebook->api("/$user"); 

    //Retriving movies those are user like using graph api 
    try{ 
     $movies = $facebook->api("/$user/movies"); 
    } 
    catch(Exception $o){ 
     d($o); 
    } 

    //update user's status using graph api 
    //http://developers.facebook.com/docs/reference/dialogs/feed/ 
    if (isset($_GET['publish'])){ 
     try { 
      $publishStream = $facebook->api("/$user/feed", 'post', array(
       'message' => "I love thinkdiff.net for facebook app development tutorials. :)", 
       'link' => 'http://ithinkdiff.net', 
       'picture' => 'http://thinkdiff.net/ithinkdiff.png', 
       'name' => 'iOS Apps & Games', 
       'description'=> 'Checkout iOS apps and games from iThinkdiff.net. I found some of them are just awesome!' 
       ) 
      ); 
      //as $_GET['publish'] is set so remove it by redirecting user to the base url 
     } catch (FacebookApiException $e) { 
      d($e); 
     } 
     $redirectUrl  = $fbconfig['baseurl'] . '/index.php?success=1'; 
     header("Location: $redirectUrl"); 
    } 

    //update user's status using graph api 
    //http://developers.facebook.com/docs/reference/dialogs/feed/ 
    if (isset($_POST['tt'])){ 
     try { 
      $statusUpdate = $facebook->api("/$user/feed", 'post', array('message'=> $_POST['tt'])); 
     } catch (FacebookApiException $e) { 
      d($e); 
     } 
    } 

    //fql query example using legacy method call and passing parameter 
    try{ 
     $fql = "select name, hometown_location, sex, pic_square from user where uid=" . $user; 
     $param = array(
      'method' => 'fql.query', 
      'query'  => $fql, 
      'callback' => '' 
     ); 
     $fqlResult = $facebook->api($param); 
    } 
    catch(Exception $o){ 
     d($o); 
    } 
} 

function d($d){ 
    echo '<pre>'; 
    print_r($d); 
    echo '</pre>'; 
}?> 

Czy ktoś może mi pomóc?

+0

możliwy duplikat [Aktywny token dostępu musi być używany do wysyłania zapytań o informacje na temat bieżącego użytkownika - wyjątek Graph api] (http://stackoverflow.com/questions/11776234/an-active-access-token-must-be -użytkownik-zapytanie-informacje-o-bieżącym-użytkowniku) –

+2

nadal nie dostaję odpowiedzi –

Odpowiedz

4

Musisz upewnić się, że token dostępu jest aktywny. A może jesteś w stanie wylogowania. Lub spróbuj wyczyścić pamięć podręczną i pliki cookie z przeglądarki (ctrl+shift+del)

+0

Czy użytkownik wyczyści pamięć podręczną? –

2

Proszę sprawdzić, czy otrzymujesz żadnych wyjątków Facebook Like

Aktywny token dostępu musi być użyty do uzyskania informacji o bieżącego użytkownika.

co powoduje 0 jako identyfikator użytkownika w odpowiedzi z $facebook->getUser().

Sprawdź więc pod numerem getAccessTokenFromCode() od base_facebook.php i sprawdź format access_token_response, jaki może być w formacie JSON.

Spróbuj użyć odpowiedniej metody dekodowania, aby uzyskać $response_params['access_token'] z $access_token_response.

Powiązane problemy