对于我的应用程序,我需要从Facebook个人资料中获取一些基本的用户信息。我创建了一个处理登录按钮的JavaScript文件和一个处理数据采集的PHP文件。 PHP文件使用FacebookJavaScriptLoginHelper进行会话。
我遇到的问题是Facebook会话为NULL,因此每当我请求数据时都会出现此错误: 可捕获的致命错误:参数1传递给Facebook \ FacebookRequest :: __ construct()必须是Facebook \ FacebookSession的一个实例,null,在\ mypath \ FacebookRequest.php 中调用。我在https上使用localhost xammp apache服务器。 这些是我的php和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
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