如何使用facebook sdk在下一个php页面中获取$ _SESSION值?

时间:2015-07-28 12:52:30

标签: php facebook session facebook-graph-api

我使用facebook SDK登录最新版本的php Facebook sdk I'm using

登录facebook和重定向页面是正确的,但我的问题是我可以在第二个php文件中获取$_SESSION['fb_access_token']来获取并显示名称,电子邮件......

代码来自网页:

的login.php

 session_start();
 require_once( 'Facebook/autoload.php' );

  $fb = new Facebook\Facebook([
  'app_id' => '{app-id}',
  'app_secret' => '{app-secret}',
  'default_graph_version' => 'v2.2',
 ]);

$helper = $fb->getRedirectLoginHelper();

$permissions = ['email']; // Optional permissions
$loginUrl = $helper->getLoginUrl('https://example.com/fb-callback.php',    $permissions);

  echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';

FB-callback.php

 session_start();
 $fb = new Facebook\Facebook([
'app_id' => '{app-id}',
'app_secret' => '{app-secret}',
'default_graph_version' => 'v2.2',
]);

 $helper = $fb->getRedirectLoginHelper();

 try {
   $accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  // When Graph returns an error
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  // When validation fails or other local issues
 echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}

 if (! isset($accessToken)) {
   if ($helper->getError()) {
     header('HTTP/1.0 401 Unauthorized');
     echo "Error: " . $helper->getError() . "\n";
    echo "Error Code: " . $helper->getErrorCode() . "\n";
    echo "Error Reason: " . $helper->getErrorReason() . "\n";
    echo "Error Description: " . $helper->getErrorDescription() . "\n";
  } else {
    header('HTTP/1.0 400 Bad Request');
    echo 'Bad request';
    }
   exit;
}

// Logged in
echo '<h3>Access Token</h3>';
 var_dump($accessToken->getValue());

 // The OAuth 2.0 client handler helps us manage access tokens
 $oAuth2Client = $fb->getOAuth2Client();

 // Get the access token metadata from /debug_token
 $tokenMetadata = $oAuth2Client->debugToken($accessToken);
 echo '<h3>Metadata</h3>';
 var_dump($tokenMetadata);

 // Validation (these will throw FacebookSDKException's when they fail)
 $tokenMetadata->validateAppId($config['app_id']);
 // If you know the user ID this access token belongs to, you can validate it     here
 //$tokenMetadata->validateUserId('123');
 $tokenMetadata->validateExpiration();

 if (! $accessToken->isLongLived()) {
    // Exchanges a short-lived access token for a long-lived one
  try {
    $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
  } catch (Facebook\Exceptions\FacebookSDKException $e) {
     echo "<p>Error getting long-lived access token: " . $helper->getMessage() . "</p>\n\n";
   exit;
  }

   echo '<h3>Long-lived</h3>';
   var_dump($accessToken->getValue());
 }

 $_SESSION['fb_access_token'] = (string) $accessToken;

// User is logged in with a long-lived access token.
 // You can redirect them to a members-only page.
 //header('Location: https://example.com/members.php');

在第二个php文件中$_SESSION['fb_access_token'] = (string) $accessToken;声明,但是当我在下一个视图中调用它时,我无法加载它,因为显示未声明或空变量。我是初学者php,但我用下一个代码加载会话,调用php api ..:

 <?php
  session_start();

 require_once( 'Facebook/autoload.php' );
 require_once( 'Facebook/FacebookRequest.php' );
 require_once( 'Facebook/Helpers/FacebookRedirectLoginHelper.php' );

 use Facebook\FacebookRequest;
 use Facebook\Helpers\FacebookRedirectLoginHelper;

 echo $_SESSION['fb_access_token'];

我展示了很多教程,示例,但从不使用实际的api php登录或使用javascript。

如何使用php登录Facebook代码并在页面中显示电子邮件,姓名等,然后登录? 提前谢谢!

0 个答案:

没有答案