AccessToken facebook, problem to post something in another php page

Hi all, I have a new problem :-X and after 3 hour of generic errors, I get this error from facebook:

active access token must be used to query information about the current user.

I try to find some solution on the web, and I try to read the manual of facebook (my english isn’t very good…so, I spend a lot of time to understand why I get this error)

so, in my index.php, I have the loading of the user and get some information about it:

INDEX.PHP
[php]<?php
session_start();
require_once( ‘Facebook/HttpClients/FacebookHttpable.php’ );
require_once( ‘Facebook/HttpClients/FacebookCurl.php’ );
require_once( ‘Facebook/HttpClients/FacebookCurlHttpClient.php’ );
require_once( ‘Facebook/Entities/AccessToken.php’ );
require_once( ‘Facebook/Entities/SignedRequest.php’);
require_once( ‘Facebook/FacebookSession.php’ );
require_once( ‘Facebook/FacebookSignedRequestFromInputHelper.php’);
require_once( ‘Facebook/FacebookCanvasLoginHelper.php’);
require_once( ‘Facebook/FacebookRedirectLoginHelper.php’ );
require_once( ‘Facebook/FacebookRequest.php’ );
require_once( ‘Facebook/FacebookResponse.php’ );
require_once( ‘Facebook/FacebookSDKException.php’ );
require_once( ‘Facebook/FacebookRequestException.php’ );
require_once( ‘Facebook/FacebookOtherException.php’ );
require_once( ‘Facebook/FacebookAuthorizationException.php’ );
require_once( ‘Facebook/GraphObject.php’ );
require_once( ‘Facebook/GraphUser.php’);
require_once( ‘Facebook/GraphSessionInfo.php’ );

use Facebook\HttpClients\FacebookHttpable;
use Facebook\HttpClients\FacebookCurl;
use Facebook\HttpClients\FacebookCurlHttpClient;

use Facebook\Entities\AccessToken;
use Facebook\Entities\SignedRequest;

use Facebook\FacebookSession;
use Facebook\FacebookSignedRequestFromInputHelper;
use Facebook\FacebookCanvasLoginHelper;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookOtherException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\GraphUser;
use Facebook\GraphSessionInfo;

FacebookSession::setDefaultApplication(‘id’,‘secret’);

$helper = new FacebookCanvasLoginHelper();

// see if a existing session exists
if ( isset( $_SESSION ) && isset( $_SESSION[‘fb_token’] ) ) {
// create new session from saved access_token
$session = new FacebookSession( $_SESSION[‘fb_token’] );

// validate the access_token to make sure it’s still valid
try {
if ( !$session->validate() ) {
$session = null;
}
} catch ( Exception $e ) {
// catch any exceptions
$session = null;
}
}

if ( !isset( $session ) || $session === null ) {
// no session exists

try {
$session = $helper->getSessionFromRedirect();
} catch( FacebookRequestException $ex ) {
// When Facebook returns an error
// handle this better in production code
print_r( $ex );
} catch( Exception $ex ) {
// When validation fails or other local issues
// handle this better in production code
print_r( $ex );
}

}

// see if we have a session
if ( isset( $session ) ) {
try {

// Exchange the short-lived token for a long-lived token.
$_SESSION[‘fb_token’] = $session->getToken();
// create a session using saved token or the new one we generated at login
$session = new FacebookSession( $session->getToken() );

//$longLivedAccessToken = $accessToken->extend();
	
	$request = new FacebookRequest($session, 'GET', '/me');
	 $response = $request->execute();
	 $me = $response->getGraphObject();
	 echo $me->getProperty('id');
	 $_SESSION['idD'] = $me->getProperty('id');

	 echo $me->getProperty('name');
	 $_SESSION['nameD'] = $me->getProperty('name');

	 echo $me->getProperty('email');
	 $_SESSION['emailD'] = $me->getProperty('email');

require ‘MYCANVAS.php’;

} catch(FacebookRequestException $e) {
	echo $e->getMessage();
}

} else {
$helper = new FacebookRedirectLoginHelper(‘https://apps.facebook.com/myapp/’);
$auth_url = $helper->getLoginUrl(array(‘user_about_me’, ‘email’, ‘user_friends’, ‘publish_actions’, ‘user_games_activity’,‘friends_games_activity’));
echo “";
}
?>[/php]

this works perfect, no problem… in this page, I also load a canvas and this, with AJAX, send some data ($score) to another page (the page I want to get works), and the page is this:

POSTSCORE.PHP
[php]<?php
session_start();
$myscore= $_POST[‘myscore’];
echo $_SESSION[‘fb_token’];
require_once( ‘Facebook/HttpClients/FacebookHttpable.php’ );
require_once( ‘Facebook/HttpClients/FacebookCurl.php’ );
require_once( ‘Facebook/HttpClients/FacebookCurlHttpClient.php’ );
require_once( ‘Facebook/Entities/AccessToken.php’ );
require_once( ‘Facebook/Entities/SignedRequest.php’);
require_once( ‘Facebook/FacebookSession.php’ );
require_once( ‘Facebook/FacebookSignedRequestFromInputHelper.php’);
require_once( ‘Facebook/FacebookCanvasLoginHelper.php’);
require_once( ‘Facebook/FacebookRedirectLoginHelper.php’ );
require_once( ‘Facebook/FacebookRequest.php’ );
require_once( ‘Facebook/FacebookResponse.php’ );
require_once( ‘Facebook/FacebookSDKException.php’ );
require_once( ‘Facebook/FacebookRequestException.php’ );
require_once( ‘Facebook/FacebookOtherException.php’ );
require_once( ‘Facebook/FacebookAuthorizationException.php’ );
require_once( ‘Facebook/GraphObject.php’ );
require_once( ‘Facebook/GraphUser.php’);
require_once( ‘Facebook/GraphSessionInfo.php’ );

use Facebook\HttpClients\FacebookHttpable;
use Facebook\HttpClients\FacebookCurl;
use Facebook\HttpClients\FacebookCurlHttpClient;

use Facebook\Entities\AccessToken;
use Facebook\Entities\SignedRequest;

use Facebook\FacebookSession;
use Facebook\FacebookSignedRequestFromInputHelper;
use Facebook\FacebookCanvasLoginHelper;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookOtherException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\GraphUser;
use Facebook\GraphSessionInfo;

FacebookSession::setDefaultApplication(‘id’,‘secret’);
$session = FacebookSession::newAppSession();

if ($session) {
try {
//$session->validate();
$session = new FacebookSession($session->getToken());
$request = new FacebookRequest($session, ‘GET’, ‘/me’);
$response = $request->execute();
$me = $response->getGraphObject();

	 echo $me->getProperty('name');

$request = new FacebookRequest( $session, ‘POST’, ‘/me/scores’, array ( ‘score’ => $myscore,‘application’ => ‘763405453345565’, ));
$response = $request->execute();
$graphObject = $response->getGraphObject();

echo “works”;

} catch(FacebookRequestException $e) {
	echo $e->getMessage();
}

} else {
$helper = new FacebookRedirectLoginHelper(‘https://apps.facebook.com/myapp/’);
$auth_url = $helper->getLoginUrl(array(‘user_about_me’, ‘email’, ‘user_friends’, ‘publish_actions’, ‘user_games_activity’,‘friends_games_activity’));
//echo “";

}
?>[/php]

I get the error this page… but, if I try to load the old token with:

$session = $_SESSION[‘fb_token’];, I get another error:

PHP Catchable fatal error: Argument 1 passed to Facebook\FacebookRequest::__construct() must be an instance of Facebook\FacebookSession, string given, called in postScore.php on line 63 and defined in FacebookRequest.php on line 182

the line 63 is this: $request = new FacebookRequest($session, ‘GET’, ‘/me’);

someone know how I can fix it? should be a problem in the token… but I don’t understand why, I also tried to load the token generated in the index.php…so, I don’t have any idea ???

thank you very much!! really

I can’t edit the original post, so I solved this problem… I rewrite everything and now is working very well, if someone have the same problem, just PM me :slight_smile:

Sponsor our Newsletter | Privacy Policy | Terms of Service