1

这有点像我之前的问题的延伸。在某种程度上解决了这个问题,我仍然遇到错误。我正在处理这里的 Javascript 指南。我现在位于页面的最后一个代码段,靠近底部。在我的页面顶部,我有以下代码(APP IDSECRET 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 相关的问题?提前致谢。

4

4 回答 4

2

表示 $ COOKIE['fbs '.$app_id] 不存在,表示 COOKIE var 为空(或未设置)

于 2011-06-16T15:16:43.750 回答
1

检查你的括号。很多时候,括号层次结构之间的简单混淆可以解决这些令人讨厌的错误。

于 2011-06-16T16:57:14.450 回答
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;
}
于 2011-06-27T16:06:12.880 回答
0

为什么不使用 Facebook PHP SDK?我已经做到了,尽管它不检查应用程序机密,但它对我有用:

// 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 ' 。FB_APP_ID] 变量只有在 JavaScript 上调用 FB.login 方法后才可用。

还要确保在初始化 JS API 时允许从 PHP 读取 cookie,如下所示:

FB.init({
    appId  : 'YOUR APP ID',
    cookie : true
});

希望它有所帮助。

链接到 PHP SDK 的 github:https ://github.com/facebook/php-sdk/

于 2011-08-05T15:56:59.417 回答