我使用Facebook PHP SDK并尝试将令牌ID从一个页面发送到另一个页面。我使用此代码 - http://www.krizna.com/demo/login-with-facebook-using-php/。我用
$helper = new FacebookRedirectLoginHelper('http://www.krizna.com/fbconfig.php' );
我试过像这样发送价值:
$helper = new FacebookRedirectLoginHelper('http://www.krizna.com/fbconfig.php?value='.$value );
但是当我尝试时,我在fbconfig.php
文件中没有获得价值:
$value = $_GET['value'];
我还使用会话来发送值,但它不起作用。如何向FacebookRedirectLoginHelper(fbconfig.php
)发送值?
fbconfig.php
<?php
session_start();
$value = $_GET['value_new'];
$fb = new \Facebook\Facebook([
'app_id' => $config->facebook->app_id,
'app_secret' => $config->facebook->app_secret
]);
$helper = $fb->getRedirectLoginHelper();
try {
if ($access_token = $helper->getAccessToken()) {
try {
// Returns a `Facebook\FacebookResponse` object with the requested fields
$response = $fb->get('/me?fields=name,id,email,picture', $access_token);
$user = $response->getGraphUser();
$fbid = $user->getId(); // To Get Facebook ID
$fbfullname = $user->getName(); // To Get Facebook full name
$femail = $graphObject->getEmail();// To Get Facebook email ID
$_SESSION['FBID'] = $fbid;
$_SESSION['FULLNAME'] = $fbfullname;
$_SESSION['EMAIL'] = $femail;
//Then do whatever you want with that data
$value = $_SESSION['value'];
header("Location: index.php?value_new=$value");
} catch (\Facebook\Exceptions\FacebookResponseException $e) {
error_log('Graph returned an error: ' . $e->getMessage());
} catch (\Facebook\Exceptions\FacebookSDKException $e) {
error_log('Facebook SDK returned an error: ' . $e->getMessage());
}
}
} catch (\Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
error_log('Graph returned an error: ' . $e->getMessage());
} catch (\Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
error_log('Facebook SDK returned an error: ' . $e->getMessage());
}
的index.php
<?php if (isset($_SESSION['FBID'])): ?><!-- After user login -->
<div class="container">
<h1>value <?php $value_new = $_GET['value_new']; echo $value_new; ?></h1>
</div>
<? endif ?>
答案 0 :(得分:2)
你不应该试图通过查询字符串/ $_GET[]
超全局传递facebook Access Token。你应该使用的是facebook推荐的,$_SESSION[]
超全球。
由于您尝试将访问令牌从一个页面传递到另一个页面,因此我们可以在第一页$access_token
上调用访问令牌。要将其传递到另一个页面,请执行以下操作:
第1页:
<?php
session_start(); //the very top of your document
// ... other code ...
$_SESSION['access_token'] = $access_token;
// ... other code ...
?>
第2页:
<?php
session_start(); //the very top of your document
// ... other code ...
$access_token = $_SESSION['access_token'];
// ... other code ...
?>
这应该有用,请告诉我它是否适合你。
答案 1 :(得分:1)
这个答案是使用Facebook PHP SDK v5.1.2,并改编自我在自己的项目中使用的方法。它还假设正在使用作曲家自动加载。
登录页面
session_start();
$fb = new \Facebook\Facebook([
'app_id' => $config->facebook->app_id, //Change these to yours
'app_secret' => $config->facebook->app_secret
]);
$helper = $fb->getRedirectLoginHelper();
$permissions = ['email'];
$this->view->facebook_url = $helper->getLoginUrl('http://www.krizna.com/fbconfig.php', $permissions);
fbconfig.php
(或您想要的重定向页面)
session_start();
$fb = new \Facebook\Facebook([
'app_id' => $config->facebook->app_id,
'app_secret' => $config->facebook->app_secret
]);
$helper = $fb->getRedirectLoginHelper();
try {
if ($access_token = $helper->getAccessToken()) {
try {
// Returns a `Facebook\FacebookResponse` object with the requested fields
$response = $fb->get('/me?fields=name,id,email,picture', $access_token);
$user = $response->getGraphUser();
$fbid = $user->getId(); // To Get Facebook ID
$fbfullname = $user->getName(); // To Get Facebook full name
$femail = $graphObject->getEmail(); // To Get Facebook email ID
$_SESSION['FBID'] = $fbid;
$_SESSION['FULLNAME'] = $fbfullname;
$_SESSION['EMAIL'] = $femail;
//Then do whatever you want with that data
} catch(\Facebook\Exceptions\FacebookResponseException $e) {
error_log('Graph returned an error: ' . $e->getMessage());
} catch(\Facebook\Exceptions\FacebookSDKException $e) {
error_log('Facebook SDK returned an error: ' . $e->getMessage());
}
}
} catch (\Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
error_log('Graph returned an error: ' . $e->getMessage());
} catch (\Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
error_log('Facebook SDK returned an error: ' . $e->getMessage());
}
希望能帮到你。我不怀疑我的代码是根据以前的StackOverflow答案或教程改编而来的。