如何解决进一步的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 举报,一经查实,本站将立刻删除。