无法获得Facebook会话登录(FB PHP SDK 4.0.0)

时间:2015-05-19 21:58:33

标签: php facebook facebook-php-sdk

经过各种尝试,我决定用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

1 个答案:

答案 0 :(得分:0)

在寻找了更多的例子之后,我看到我没有添加这篇文章

$loginUrl = $helper->getLoginUrl();
header("Location: ".$loginUrl);
在isset($ session)中。这是因为我不明白为什么需要它,当会话没有定义时,我没有在任何地方重定向。

if(isset($session)){
   echo "Session defined: ".$session;
} else {
   $loginUrl = $helper->getLoginUrl();
   header("Location: ".$loginUrl);
}