Facebook PHP登录后,本机PHP会话变量会自动销毁

时间:2015-01-04 11:40:39

标签: php facebook session sdk

我正在使用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>';
}

0 个答案:

没有答案