微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

进一步的Facebook登录Javascript错误

如何解决进一步的Facebook登录Javascript错误

| 这是我先前问题的扩展。解决了一些问题后,我仍然遇到错误。我正在这里处理Javascript指南。我现在位于页面的最后一个代码段中,朝着底部。在页面顶部,我具有以下代码(在我的代码中定义了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相关联?提前致谢。     

解决方法

        检查括号。很多时候,括号层次结构之间的简单混淆可以解决这些令人讨厌的错误。     ,        这意味着$ COOKIE [\'fbs \'。$ app_id]不存在,这意味着COOKIE var为空(或未设置)     ,        我添加了一个简单的检查来检查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;
}
    ,        为什么不使用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/     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。