经过各种尝试,我决定用SDK 4.0.0在FB PHP登录时写下我的问题。 问题是我无法检索会话,我不知道为什么。 我的代码(放在名为" social.php"的文件中)如下:
session_start();
define('fbsdk', "/fbsdk/src/Facebook/");
require __DIR__ . '/fbsdk/autoload.php';
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphUser;
if(isset($_GET['login'])){
if($_GET['login'] == "fb"){
$appid = "677652872357474";
$appsecret = "******";
FacebookSession::setDefaultApplication($appid, $appsecret);
$helper = new FacebookRedirectLoginHelper('http://localhost/ffideasbox/');
try{
$session = $helper->getSessionFromRedirect();
} catch(FacebookRequestException $ex){
print_r($ex);
} catch(Exception $ex){
print_r($ex);
}
if(isset($session)){
echo "Session defined: ".$session;
} else {
echo "Session not defined";
}
} elseif($_GET['login'] == "tw"){
} elseif($_GET['login'] == "gp"){
} else {
...
}
} else {
....
}
?>
如果我转到Session(https://developers.facebook.com/docs/php/FacebookSession/4.0.0)的文档页面,它会告诉我我可以通过以下方式进行会话:
// If you already have a valid access token:
$session = new FacebookSession('access-token');
// If you're making app-level requests:
$session = FacebookSession::newAppSession();
最终,哪个是访问令牌?我怎么能得到它?
然后,在发布此处之后,我在会话TRY块之前添加了另一个: $ session = FacebookSession :: newAppSession();
try{
$session->validate();
} catch(FacebookRequestException $ex){
echo $ex->getMessage();
} catch(\Exception $ex){
echo $ex->getMessage();
}
但我仍然得到同样的信息:"会话未定义" (由我在会议IF块中写的)。
有人可以告诉我更多有关FBSDK的信息吗?我阅读了文档,但我不太了解。 谢谢大家。
编辑:我还添加了"地图" sdk文件夹-mainfolder
|-fbsdk
|-autoload.php
|-src
|-Facebook
|-All the complete facebook sdk
答案 0 :(得分:0)
在寻找了更多的例子之后,我看到我没有添加这篇文章
$loginUrl = $helper->getLoginUrl();
header("Location: ".$loginUrl);
if(isset($session)){
echo "Session defined: ".$session;
} else {
$loginUrl = $helper->getLoginUrl();
header("Location: ".$loginUrl);
}