这有点是我之前问题的延伸。有点解决了,我仍然遇到错误。我正在使用Javascript指南here。我现在在页面的最后一个代码段,最底层。在我的页面顶部,我有以下代码(我的代码中定义了 APP ID 和 SECRET ID ):
<?php
define('YOUR_APP_ID', '**APP ID**');
define('YOUR_APP_SECRET', '**SECRET ID**');
function get_facebook_cookie($app_id, $app_secret) {
$args = array();
parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args);
ksort($args);
$payload = '';
foreach ($args as $key => $value) {
if ($key != 'sig') {
$payload .= $key . '=' . $value;
}
}
if (md5($payload . $app_secret) != $args['sig']) {
return null;
}
return $args;
}
$cookie = get_facebook_cookie(YOUR_APP_ID, YOUR_APP_SECRET);
$user = json_decode(file_get_contents(
'https://graph.facebook.com/me?access_token=' .
$cookie['access_token']));
?>
但现在我得到了这些错误(谷歌搜索它们没有变得有用):
同样,我的应用ID正确显示在错误代码中。
Notice: Undefined index: fbs_**MY APP ID** in C:\wamp\www\_header.php on line 10
Notice: Undefined index: sig in C:\wamp\www\_header.php on line 18
是否可能是与WAMP相关的问题?提前谢谢。
答案 0 :(得分:2)
这意味着$ COOKIE ['fbs '。$ app_id]不存在,这意味着COOKIE var为空(或未设置)
答案 1 :(得分:1)
检查括号。很多时候,括号层次结构中的简单混淆可以解决这些令人讨厌的错误。
答案 2 :(得分:0)
我添加了一个简单的检查来检查cookie中的var。 这对我有用。
function get_facebook_cookie($app_id, $application_secret)
{
$args = array();
if (!isset($_COOKIE['fbs_' . $app_id])) {
//BOOHOO, NO COOKIE;
return $args;
}
parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args);
ksort($args);
$payload = '';
foreach ($args as $key => $value) {
if ($key != 'sig') {
$payload .= $key . '=' . $value;
}
}
if (md5($payload . $application_secret) != $args['sig']) {
return null;
}
return $args;
}
答案 3 :(得分:0)
为什么不使用Facebook PHP SDK?我已经这样做了,虽然不检查app秘密,但它对我有用:
// Read the cookie created by the JS API
$cookie = trim($_COOKIE['fbs_' . FB_APP_ID], '\\"');
parse_str($cookie, $data);
// Startup the Facebook object
$fb = new Facebook(array(
'appId' => FB_APP_ID,
'secret' => FB_APP_SECRET
));
// Say we are using the token from the JS
$fb->setAccessToken($data['access_token']);
// It should work now
var_dump($fb->getUser());
请注意$ COOKIE ['fbs '。只有在JavaScript上调用FB.login方法后,FB_APP_ID]变量才可用。
还要确保在初始化JS API时允许从PHP读取cookie,如下所示:
FB.init({
appId : 'YOUR APP ID',
cookie : true
});
希望它有所帮助。
链接到PHP SDK的github:https://github.com/facebook/php-sdk/