作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我使用 Facebook PHP SDK 并尝试将 token 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'];
我也使用 session 来发送值,但它不起作用。如何将值发送到 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 ?>
最佳答案
您不应该尝试通过查询字符串/$_GET[]
superglobal 传递 facebook 访问 token 。您应该使用的是 facebook 推荐的,即 $_SESSION[]
超全局。
由于您正试图将访问 token 从一个页面传递到另一个页面,因此让我们在第一页上调用访问 token $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 ...
?>
这应该可行,请告诉我它是否适合您。
关于php - 如何在 PHP 中将值传递给 FacebookRedirectLoginHelper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37005821/
我是一名优秀的程序员,十分优秀!