facebook php sdk $ sess返回null?

时间:2015-02-13 17:10:44

标签: session facebook-graph-api facebook-php-sdk

**我的问题是我无法使用facebook php sdk v4通过域登录我的网站,但是当我在我的本地主机上试用它时它完全正常。可能是什么问题?**

这是我的index.php

<?php include'facebook/fbconnect.php';?>
<?php 
require 'connection/connect.inc.php';
require 'connection/core.inc.php';


if(isset($_GET['username'])&&isset($_GET['password'])){
    $user=$_GET['username'];
    $pass=$_GET['password'];


    $query="select Acc_Id from account where Acc_Status_Id=1 and BINARY Acc_Domain_Id=4 and Acc_Username='".$user."' and BINARY Acc_Password='".$pass."' and Acc_Type_Id=1";
    if($query_run=mysql_query($query)or die(mysql_error())){

        $mysql_rows=mysql_num_rows($query_run);

        if($mysql_rows==1){

                $user_id = mysql_result($query_run, 0, 'Acc_Id');

                $_SESSION['acc_id']=$user_id;
                header('Location:index.php');

        }else{
            ?>
    <script type="text/javascript"> 
    alert("Invalid Data !");  
    history.back();
    </script>
            <?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;
    use Facebook\FacebookHttpable;
    use Facebook\FacebookCurlHttpClient;
    use Facebook\FacebookCurl;


if(isset($sess)){
            //store the token in the php session
            $_SESSION['fb_token']=$sess->getToken();
            //create request object,execute and capture response
            $request = new FacebookRequest($sess,'GET','/me');
            // from response get graph object
            $response = $request->execute();
            $graph = $response->getGraphObject(GraphUser::classname());
            // use graph object methods to get user details
            $name = $graph->getName();
            $id = $graph->getId();
            $image = 'https://graph.facebook.com/'.$id.'/picture?width=300';
            $email = $graph->getProperty('email');
    //db check for fb.      
    $query="select Acc_Id from account where Acc_Status_Id=1 and BINARY Acc_Domain_Id=1 and Acc_Username='$id' and Acc_Type_Id=1";
    if($query_run1=mysql_query($query)or die(mysql_error())){

        $mysql_rows1=mysql_num_rows($query_run1);

        if($mysql_rows1==1){

                $user_id1 = mysql_result($query_run1, 0, 'Acc_Id');

                $_SESSION['acc_id']=$user_id1;

        }else{
            $ins="insert into account (Acc_Username,Acc_Name,Acc_Email,Acc_Type_Id,Acc_Status_Id,Acc_Domain_Id)values('$id','$name','$email',1,1,1)";
            //echo $ins;
             mysql_query($ins)or die(mysql_error());
             $user_id = mysql_insert_id();

                $_SESSION['acc_id']=$user_id;
        }
    }
    include 'home_1.php';
    }else{
if(loggedin()){

    include 'home_1.php';

}else{

    include 'home_1G.php';
    }
}
?>

这是我的fbconnect.php

<?php
require_once( 'lib/Facebook/FacebookSession.php');
require_once( 'lib/Facebook/FacebookRequest.php' );
require_once( 'lib/Facebook/FacebookResponse.php' );
require_once( 'lib/Facebook/FacebookSDKException.php' );
require_once( 'lib/Facebook/FacebookRequestException.php' );
require_once( 'lib/Facebook/FacebookRedirectLoginHelper.php');
require_once( 'lib/Facebook/FacebookAuthorizationException.php' );
require_once( 'lib/Facebook/GraphObject.php' );
require_once( 'lib/Facebook/GraphUser.php' );
require_once( 'lib/Facebook/GraphSessionInfo.php' );
require_once( 'lib/Facebook/Entities/AccessToken.php');
require_once( 'lib/Facebook/HttpClients/FacebookCurl.php' );
require_once( 'lib/Facebook/HttpClients/FacebookHttpable.php');
require_once( 'lib/Facebook/HttpClients/FacebookCurlHttpClient.php');

/ *使用NAMESPACES * /

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;
use Facebook\FacebookHttpable;
use Facebook\FacebookCurlHttpClient;
use Facebook\FacebookCurl;

/ PROCESS /

//1.Stat Session
session_start();

//check if users wants to logout
 if(isset($_REQUEST['logout'])){
    unset($_SESSION['fb_token']);
 }

//2.Use app id,secret and redirect url 
$app_id = '**';
$app_secret = '**';
$redirect_url='**';

//3.Initialize application, create helper object and get fb sess
 FacebookSession::setDefaultApplication($app_id,$app_secret);
 $helper = new FacebookRedirectLoginHelper($redirect_url);
 $sess = $helper->getSessionFromRedirect();

//check if facebook session exists
if(isset($_SESSION['fb_token'])){
    $sess = new FacebookSession($_SESSION['fb_token']);
} ?>

我确定我将app_id保密,甚至是网址。

1 个答案:

答案 0 :(得分:0)

我们最近遇到了类似的问题。本地和测试版服务器工作,但我们的生产服务器没有。

问题是,V4需要PHP 5.4或更高版本。 https://developers.facebook.com/docs/php/gettingstarted/4.0.0

可能不是你的问题,但听起来真的像我们的。希望能帮助到你。