0

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

我遇到的问题是 Facebook 会话为 NULL,因此每当我请求数据时都会出现此错误:可捕获的致命错误:传递给 Facebook\FacebookRequest::__construct() 的参数 1 必须是 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>

PHP文件

   <?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 变量时,它将为空,它将输出我制作的消息。 我的问题是:为什么我的 $session 变量在我的 php 文件中为空?

提前致谢!

相关问题:

Facebook PHP SDK v4.0 FacebookJavaScriptLoginHelper 返回状态 NULL

4

0 回答 0