Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
本机PHP会话变量在Facebook PHP登录后自动销毁_Php_Facebook_Session_Sdk - Fatal编程技术网

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

本机PHP会话变量在Facebook PHP登录后自动销毁,php,facebook,session,sdk,Php,Facebook,Session,Sdk,我正在为我的应用程序使用facebook php sdk 4。我添加了一些有关$\u会话的数据。但在使用FacebookRedirectLoginHelper::getLoginUrl登录后,这些会话变量将被删除。代码如下: session_start(); session_regenerate_id(true); define( 'ROOT', dirname( __FILE__ ) . '/' ); require_once( ROOT . 'facebook-php-sdk-v4-

我正在为我的应用程序使用facebook php sdk 4。我添加了一些有关$\u会话的数据。但在使用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>';
}
session_start();
会话\u重新生成\u id(true);
定义('ROOT',目录名(_文件__)。'/');
require_once(ROOT.'facebook-php-sdk-v4-4.0-dev/autoload.php');
使用Facebook\FacebookSession;
使用Facebook\FacebookRedirectLoginHelper;
$app_id='MY id';
$app_secret='MY SEC';
$redirect_uri='1http://myurl.com/a1.php';
//请求的应用程序权限-可选
$permissions=array(
“电子邮件”,
“用户位置”,
“用户生日”,
“发布行动”
);
//初始化SDK
FacebookSession::setDefaultApplication($app\u id,$app\u secret);
$helper=newfacebookRedirectLoginHelper($redirect\u uri);
如果(isset($_会话)和&isset($_会话['fb_令牌]))
{
$session=newfacebooksession($_session['fb_token']);
试一试{
如果(!$session->validate()){
$session=null;
}
}捕获(例外$e){
//抓住任何例外
$session=null;
}
}否则{
试一试{
$session=$helper->getSessionFromRedirect();
}捕获(FacebookRequestException$ex){
}捕获(例外$ex){
echo$ex->message;
}
}
国际单项体育联合会(isset($届会)){
$\u会话['fb\u令牌']=$SESSION->getToken();
$session=newfacebooksession($session->getToken());
}
否则{
//没有会议
$\u SESSION[“V\u ActualData\u Message”]=“我的消息”**//我没有在这里的$redirect\u uri上得到这个消息http://myurl.com/a1.php**
$loginUrl=$helper->getLoginUrl($permissions);
标题('位置:'。$loginUrl);
出口
//回声';
}
下面是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>';
}
session_start();
定义('ROOT',目录名(_文件__)。'/');
require_once(ROOT.'facebook-php-sdk-v4-4.0-dev/autoload.php');
使用Facebook\FacebookSession;
使用Facebook\FacebookRedirectLoginHelper;
使用Facebook\FacebookRequest;
$app_id='377309525773973';
$app_secret='7db5a66e837f0c9e000fbf9ec4276d49';
$redirect_uri='a1.php';
$permissions=array(
“电子邮件”,
“用户位置”,
“用户生日”,
“发布行动”
);
FacebookSession::setDefaultApplication($app\u id,$app\u secret);
$helper=newfacebookRedirectLoginHelper($redirect\u uri);
如果(isset($_会话)和&isset($_会话['fb_令牌])){
$session=newfacebooksession($_session['fb_token']);
尝试
{
如果(!$session->validate($app\u id,$app\u secret)){
$session=null;
}
}捕获(例外$e){
$session=null;
}
}否则{
试一试{
$session=$helper->getSessionFromRedirect();
}捕获(FacebookRequestException$ex){
}捕获(例外$ex){
echo$ex->getMessage();
}
}
试一试{
$session=$helper->getSessionFromRedirect();
}捕获(FacebookRequestException$ex){
}捕获(例外$ex){
echo$ex->getMessage();
}
$message=“”;
$message=$\会话['V\u实际数据\消息'];
国际单项体育联合会(isset($届会)){
$\u会话['fb\u令牌']=$SESSION->getToken();
在登录时生成
$session=newfacebooksession($session->getToken());
$logoutURL=$helper->getLogoutUrl($session,'facebookLogout.php');
尝试
{
$request=(新的facebook请求($session,'POST','me/feed',数组(
'message'=>$message
)))->执行();
$response=$request->getGraphObject()->asArray();
}
捕获(FacebookClientException$ex)
{
echo$ex->getMessage();
}
回声“
”; 回显“已提交邮件ID”; 回声“
”; 打印(回复); 回声“
”; 回声“
”; 回声$信息; 回声“
”; 回声'; }否则{ //没有会议 //获取登录URL $loginUrl=$helper->getLoginUrl($permissions); 回声'; }
尝试删除
会话\u重新生成\u id
以进行测试。同时发布a1.php文件。因为我的机器上没有任何会话重新生成的错误,我添加了a1.php的代码。