2012-03-08 10 views
0

ユーザを認証して壁に投稿した後、ログアウトするか、ログアウトしてログインし直すと、このエラーが発生します。facebook php apiはログイン、ログアウト、ログバックを許可する情報を照会するためにアクティブなアクセストークンを使用する必要があります

Fatal error: Uncaught OAuthException: An active access token must be used to query 
information about the current user. thrown in ... 

ログインしても問題ありません。

jdkのFB.logoutを使用してスクリプトをログアウトした後、$ _SESSION ['active'] [$ access_token]をnullに設定していますので、Facebookのログインから再度ページに接続すると、上記のエラーが発生します。ただし、スクリプトはユーザーデータを消去しません。

$ user = $ facebook-> getUser();以前のuserIDを返します。これは私の問題の一部です。ここで

はコード

<?php 
//include the Facebook PHP SDK 
include_once 'facebook.php'; 

//instantiate the Facebook library with the APP ID and APP SECRET 
$facebook = new Facebook(array(
    'appId' => '162628977190080', 
    'secret' => '**MADE PRIVATE**', 
    'cookie' => true 
)); 

//Get the FB UID of the currently logged in user 
$user = $facebook->getUser(); 




//if the user has already allowed the application, you'll be able to get his/her FB UID 
if($user) { 

    //start the session if needed 
    if(session_id()) { 

    } else { 
     session_start(); 
    } 

    //do stuff when already logged in 

    //get the user's access token 
    $access_token = $facebook->getAccessToken(); 
    //check permissions list 
    $permissions_list = $facebook->api(
     '/me/permissions', 
     'GET', 
     array(
      'access_token' => $access_token 
     ) 
    ); 

    //check if the permissions we need have been allowed by the user 
    //if not then redirect them again to facebook's permissions page 
    $permissions_needed = array('publish_stream', 'email'); 
    foreach($permissions_needed as $perm) { 
     if(!isset($permissions_list['data'][0][$perm]) || $permissions_list['data'][0][$perm] != 1) { 
      $login_url_params = array(
       'scope' => 'publish_stream,email', 
       'fbconnect' => 1, 
       'display' => "page", 
       'next' => 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'] 
      ); 
      $login_url = $facebook->getLoginUrl($login_url_params); 
      header("Location: {$login_url}"); 
      exit(); 
     } 
    } 

    //if the user has allowed all the permissions we need, 
    //get the information about the pages that he or she managers 
    $accounts = $facebook->api(
     '/me/accounts', 
     'GET', 
     array(
      'access_token' => $access_token 
     ) 
    ); 

    //save the information inside the session 
    $_SESSION['access_token'] = $access_token; 
    $_SESSION['accounts'] = $accounts['data']; 
    //save the first page as the default active page 
    $_SESSION['active'] = $accounts['data'][0]; 

    //redirect to manage.php 
    header('Location: ../facebook_result.php'); 
} else { 

    //if not, let's redirect to the ALLOW page so we can get access 
    //Create a login URL using the Facebook library's getLoginUrl() method 
    $login_url_params = array(
     'scope' => 'read_stream,email', 
     'fbconnect' => 1, 
     'display' => "page", 
     'next' => 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'] 
    ); 
    $login_url = $facebook->getLoginUrl($login_url_params); 

    //redirect to the login URL on facebook 
    header("Location: {$login_url}"); 
    exit(); 
} 

?> 
+0

誰ですか?私は本当にこれ以上のナッツをしています。 – jeremiah

答えて

0

は、PHPの多くを取り払うとJavaScript SDKを使用して、それを解決、私が望んで行うに書き換えることが3時間未満を取っています。

関連する問題

 関連する問題