Facebook应用无法获得Session

时间:2014-06-29 14:32:48

标签: php facebook heroku facebook-php-sdk

我正在为Heroku for Facebook开发一个非常基本的PHP应用程序,它显示非常基本的用户信息,如Name,Profile Picture,但应用程序在getToken方法中停止!
我在登录我的个人资料后尝试了该应用程序仍然是相同的消息:

以下是代码

composer.json

{}

index.php

    session_start();
    require_once( 'Facebook/FacebookSession.php' );
    require_once( 'Facebook/FacebookRedirectLoginHelper.php' );
    require_once( 'Facebook/FacebookRequest.php' );
    require_once( 'Facebook/FacebookResponse.php' );
    require_once( 'Facebook/FacebookSDKException.php' );
    require_once( 'Facebook/FacebookRequestException.php' );
    require_once( 'Facebook/FacebookAuthorizationException.php' );
    require_once( 'Facebook/GraphObject.php' );
    require_once( 'Facebook/GraphUser.php' );
    require_once( 'Facebook/GraphSessionInfo.php' );

    use Facebook\FacebookSession;
    use Facebook\FacebookRedirectLoginHelper;
    use Facebook\FacebookRequest;
    use Facebook\FacebookResponse;
    use Facebook\FacebookSDKException;
    use Facebook\FacebookRequestException;
    use Facebook\FacebookAuthorizationException;
    use Facebook\GraphObject;
    use Facebook\GraphUser;
    use Facebook\GraphSessionInfo;
FacebookSession::setDefaultApplication($id, $secret);
$helper = new FacebookRedirectLoginHelper('http://facebook.com');

try{
    $session = $helper->getSessionFromRedirect();
} catch(Exception $e){  echo 'Error in Session > '.$e;
}

if(isset($_SESSION['token'])){
    $session = new FacebookSession($_SESSION['token']);
    try{
        $session->Validate($id, $secret);
    }catch(FacebookAuthorizationException $e){
    echo 'Error in Token >'.$e;     $session = '';
    }
}

if(isset($session)){
    $_SESSION['token'] = $session->getToken();
    echo "Login Successful<br>";
    $request = new FacebookRequest($session, 'GET', '/me');
    $response = $request->execute();
    $graph = $response->getGraphObject(GraphUser::className());
    echo "Hi " . $graph->getName();
}
else{
    echo "<a href = " . $helper->getLoginUrl() . ">Login With Facebook</a>";
}

应用程序总是进入登录Facebook ,这是最后一个部分!
问题出在哪里?
我对这个Heroku和Facebook SDK v4完全不熟悉,在搜索了几个小时之后,没有在Facebook上找到任何样本应用程序用于Heroku~

1 个答案:

答案 0 :(得分:-1)

尝试将代码更改为此代码并查看是否有帮助:

if ( isset( $_SESSION['token'] ) ) {
    $session = new FacebookSession($_SESSION['token']);
    try{
        $session->Validate($id, $secret);
    }catch(FacebookAuthorizationException $e){
    echo 'Error in Token >'.$e;     $session = '';
        $session = null;
    }
} else {
    $session = null;
}

// if session is null, try getting it from redirect
if ( $session === null ) {
    try{
        $session = $helper->getSessionFromRedirect();
    } catch(Exception $e){  echo 'Error in Session > '.$e;
    }
}

if ( isset( $session ) && $session != null ) {
    $_SESSION['token'] = $session->getToken();
    echo "Login Successful<br>";
    $request = new FacebookRequest($session, 'GET', '/me');
    $response = $request->execute();
    $graph = $response->getGraphObject(GraphUser::className());
    echo "Hi " . $graph->getName();
}
else{
    echo "<a href = " . $helper->getLoginUrl() . ">Login With Facebook</a>";
}

我使用了与code shown here类似的方法。