来自javascript facebook inlog cookie的Facebook会话为空

时间:2014-12-04 14:35:02

标签: javascript php facebook session facebook-sdk-4.0

对于我的应用程序,我需要从Facebook个人资料中获取一些基本的用户信息。我创建了一个处理登录按钮的JavaScript文件和一个处理数据采集的PHP文件。 PHP文件使用FacebookJavaScriptLoginHelper进行会话。

我遇到的问题是Facebook会话为NULL,因此每当我请求数据时都会出现此错误: 可捕获的致命错误:参数1传递给Facebook \ FacebookRequest :: __ construct()必须是Facebook \ FacebookSession的一个实例,null,在\ mypath \ FacebookRequest.php 中调用。我在https上使用localhost xammp apache服务器。 这些是我的php和JavaScript文件。

JavaScript文件

<!DOCTYPE html>
<html xmlns:fb="http://ogp.me/ns/fb#">
<head>
    <title>Javascript</title>
<meta charset="UTF-8">
</head>
<body>
    <script>    
        function statusChangeCallback(response) 
        {
            console.log('statusChangeCallback');
            console.log(response);              
            if (response.status === 'connected') 
                {
                    // User is connected to app and facebook
                } 
                else if (response.status === 'not_authorized') 
                {
                    // User is only logged into Facebook
                } 
                else 
                {
                    // User has not logged in to Facebook
                }
        }


        function checkLoginState() 
        {
            FB.getLoginStatus(function(response) 
        {
        statusChangeCallback(response);
        if (response.status === 'connected')
        {
            window.location="phpfile.php";
        }

        });
        }

        window.fbAsyncInit = function() 
        {
            FB.init(
            {
                appId      : 'My_app_ID',
                cookie     : true,  
                xfbml      : true,  
                version    : 'v2.1', 
                status     : true
            });

            FB.getLoginStatus(function(response) 
            {
                statusChangeCallback(response);
            });
        };

        (function(d, s, id) 
        {
            var js, fjs = d.getElementsByTagName(s)[0];
            if (d.getElementById(id)) return;
            js = d.createElement(s); js.id = id;
            js.src = "//connect.facebook.net/nl_NL/sdk.js";
            fjs.parentNode.insertBefore(js, fjs);
        }
        (document, 'script', 'facebook-jssdk'));
</script>

<fb:login-button max_rows="3" size="xlarge" show_faces="true" auto_logout_link="true"default_audience="everyone" onlogin="checkLoginState();"></fb:login-button>

<div id="status">
</div>

</body>
</html>

PHPfile

   <?php
    require_once "/facebook-php-sdk-v4-4.0-dev/autoload.php";

    use Facebook\FacebookSession;
    use Facebook\FacebookRequest;
    use Facebook\FacebookJavaScriptLoginHelper;

    FacebookSession::setDefaultApplication('myappid', 'myappsecret');

    $helper = new FacebookJavaScriptLoginHelper();
    try 
    {
        $session = $helper->getSession();
        if($session === NULL)
        {
            echo "Session = null ";
        }
    } 
    catch(FacebookRequestException $ex) 
    {
        // facebookerror
    } 
    catch(\Exception $ex) 
    {

    }
    if ($session) 
    {
        echo "session sucessfull";
    }

    ?>

当我运行代码并在phpfile中检查$ session变量时,它将为null并且它将输出我所做的消息。 我的问题是:为什么我的$ session变量在我的php文件中为null?

提前致谢!

相关问题:

Facebook PHP SDK v4.0 FacebookJavaScriptLoginHelper return state NULL

0 个答案:

没有答案