我正在使用facebook php sdk 4作为我的应用程序。我在$ _SESSION上添加了一些数据。但是在使用FacebookRedirectLoginHelper :: getLoginUrl登录后,这些会话变量将被删除。以下是代码:
session_start();
session_regenerate_id(true);
define( 'ROOT', dirname( __FILE__ ) . '/' );
require_once( ROOT . 'facebook-php-sdk-v4-4.0-dev/autoload.php' );
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
$app_id = 'MY ID';
$app_secret = 'MY SEC';
$redirect_uri = 'http://myurl.com/a1.php';
// Requested permissions for the app - optional
$permissions = array(
'email',
'user_location',
'user_birthday',
'publish_actions'
);
// Initialize the SDK
FacebookSession::setDefaultApplication( $app_id, $app_secret );
$helper = new FacebookRedirectLoginHelper( $redirect_uri );
if ( isset( $_SESSION ) && isset( $_SESSION['fb_token'] ) )
{
$session = new FacebookSession( $_SESSION['fb_token'] );
try {
if ( ! $session->validate() ) {
$session = null;
}
} catch ( Exception $e ) {
// Catch any exceptions
$session = null;
}
} else {
try {
$session = $helper->getSessionFromRedirect();
} catch( FacebookRequestException $ex ) {
} catch( Exception $ex ) {
echo $ex->message;
}
}
if ( isset( $session ) ) {
$_SESSION['fb_token'] = $session->getToken();
$session = new FacebookSession( $session->getToken() );
}
else {
// No session
$_SESSION["V_ActualData_Message"]="My Message"; **// I am not getting this one on $redirect_uri here http://myurl.com/a1.php**
$loginUrl = $helper->getLoginUrl( $permissions );
header('Location: ' . $loginUrl);
exit;
//echo '<a href="' . $loginUrl . '">Log in with FaceBook</a>';
}
以下是a1.php的内容
session_start();
define( 'ROOT', dirname( __FILE__ ) . '/' );
require_once( ROOT . 'facebook-php-sdk-v4-4.0-dev/autoload.php' );
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
$app_id = '377309525773973';
$app_secret = '7db5a66e837f0c9e000fbf9ec4276d49';
$redirect_uri = 'a1.php';
$permissions = array(
'email',
'user_location',
'user_birthday',
'publish_actions'
);
FacebookSession::setDefaultApplication( $app_id, $app_secret );
$helper = new FacebookRedirectLoginHelper($redirect_uri);
if ( isset( $_SESSION ) && isset( $_SESSION['fb_token'] ) ) {
$session = new FacebookSession( $_SESSION['fb_token'] );
try
{
if ( ! $session->validate($app_id,$app_secret) ) {
$session = null;
}
} catch ( Exception $e ) {
$session = null;
}
} else {
try {
$session = $helper->getSessionFromRedirect();
} catch( FacebookRequestException $ex ) {
} catch( Exception $ex ) {
echo $ex->getMessage();
}
}
try {
$session = $helper->getSessionFromRedirect();
} catch( FacebookRequestException $ex ) {
} catch( Exception $ex ) {
echo $ex->getMessage();
}
$message="";
$message=$_SESSION['V_ActualData_Message'];
if ( isset( $session ) ) {
$_SESSION['fb_token'] = $session->getToken();
generated at login
$session = new FacebookSession( $session->getToken() );
$logoutURL = $helper->getLogoutUrl( $session, 'facebookLogout.php' );
try
{
$request = (new FacebookRequest( $session, 'POST', '/me/feed', array(
'message' => $message
)))->execute();
$response = $request->getGraphObject()->asArray();
}
catch(FacebookClientException $ex)
{
echo $ex->getMessage();
}
echo "<br/>";
echo "Submitted Message ID";
echo "<br/>";
print_r( $response );
echo "<br/>";
echo "<br/>";
echo $message;
echo "<br/>";
echo '<a href="' . $logoutURL . '">Log out</a>';
} else {
// No session
// Get login URL
$loginUrl = $helper->getLoginUrl( $permissions );
echo '<a href="' . $loginUrl . '">Log in with FaceBook</a>';
}