Facebook Connect - JavaScript和PHP SDK
问题描述:
我试图组合这两个SDK。为了做到这一点,我创建了这个代码:Facebook Connect - JavaScript和PHP SDK
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>New JavaScript SDK & OAuth 2.0 based FBConnect Tutorial | Thinkdiff.net</title>
<!--
@author: Mahmud Ahsan (http://mahmud.thinkdiff.net)
-->
</head>
<body>
<div id="fb-root"></div>
<script type="text/javascript">
var button;
var userInfo;
window.fbAsyncInit = function() {
FB.init({ appId: 'xxxxxxxxxx', //change the appId to your appId
status: true,
cookie: true,
xfbml: true,
oauth: true});
showLoader(true);
</script>
<body>
<?php
$cookie = preg_replace("/^\"|\"$/i", "", $_COOKIE['fbs_' . "203222769784206"]);
parse_str($cookie, $data);
$fb = new Facebook(array(
'appId' => "xxxx",
'secret' => "xxxxxx"
));
$fb->setAccessToken($data['access_token']);
var_dump($fb->getUser());
?>
</body>
</html>
但是,它打印int(0)。可能是什么问题?它错在哪里?访问令牌有问题吗?
答
此代码不起作用。这里是问题 - PHP代码在服务器端运行,JS/HTML代码在浏览器上运行。您正在运行一个PHP服务器端代码,这取决于只有在页面加载并运行后才会发生的事情。它可能能够工作在下一个浏览量,因为可能会设置cookie。
另外,在用户授权应用程序之前,可能不会设置access_token事物。你检查过吗?
也就是说,这是获取用户数据的一种非常糟糕的方式。解析由FB设置的cookie不是FB支持的方式,可能会违反API的条款和条件。
您必须使用标准JS-SDK FB.Login()来登录用户并获取access_token并将其发送到服务器并在服务器端获取数据。