Oauth facebook->getUser()始终返回0
我和许多其他人一样,都有一个问题,PHPSDK中的getUser方法始终返回零。 我发现原因是parseSignedRequest方法中的一个条件Oauth facebook->getUser()始终返回0,oauth,facebook-php-sdk,Oauth,Facebook Php Sdk,我和许多其他人一样,都有一个问题,PHPSDK中的getUser方法始终返回零。 我发现原因是parseSignedRequest方法中的一个条件 if ($sig !== $expected_sig) { self::errorLog('Bad Signed JSON signature!'); return NULL; } 这种情况总是正确的。当我取消注释此条件时,它工作正常。我获得了正确的用户,并且我还可以在我要求的地方获取具有所有权限的令牌 但是我对这个肮脏的解决方案感到不舒服
if ($sig !== $expected_sig) {
self::errorLog('Bad Signed JSON signature!');
return NULL;
}
这种情况总是正确的。当我取消注释此条件时,它工作正常。我获得了正确的用户,并且我还可以在我要求的地方获取具有所有权限的令牌
但是我对这个肮脏的解决方案感到不舒服。为什么会这样呢。服务器上可能存在配置错误
亲切的问候我也有同样的问题。。我花了4天时间才找到它 下面是我对条件的调试回音的结果,其中将$sig与$expected_sig进行比较 信号:[�ꢖ�B��U����F�^��4֣�全科医生� 预期信号:��{��.��西北地区�:�R��B�����C8$��%F 因此,出于某种原因,发送的签名与任何预期的编码签名都不匹配 所以我想知道…这里可能出了什么问题 可能是我没有传递正确的秘密,即使我在配置中正确设置了它
require_once("facebook.php");
$config = array();
$config[‘appId’] = $APP_ID;
$config[‘secret’] = $APP_SECRET;
$config[‘fileUpload’] = false; // optional
$facebook = new Facebook($config);
事实证明,当我使用
$facebook->getAppID();
或
什么也不归还
这就是为什么我的getSignedRequestCookieName函数只返回fbsr_
这就是为什么
$expected_sig = hash_hmac('sha256', $payload,
$facebook->getAppSecret(), $raw = true);
返回错误的哈希
但是为什么呢
简单回答:一个格式错误的配置数组
使用$config['appId']=$APP_ID;…注意appId周围的引号。这是facebook开发者文档上的文档/示例的直接复制/粘贴
用标准双引号替换这些引号
$config = array();
$config["appId"] = $APP_ID;
$config["secret"] = $APP_SECRET;
$config["fileUpload"] = false; // optional
…以下是结果:
sig:r�0��g%���ͦ��W��B^���Ddv
预期信号:r�0��g%���ͦ��W��B^���Ddv
他们现在匹配
长话短说…执行phpinfo以确保获得签名的请求令牌…如果您确定获得该令牌或$request[fbsr]var…如果您确定获得编码的签名请求…哈希不匹配的唯一原因是您没有获得正确的机密
$config = array();
$config["appId"] = $APP_ID;
$config["secret"] = $APP_SECRET;
$config["fileUpload"] = false; // optional