我正在使用新的php SDK来创建一个非常简单的应用程序。 当我尝试$ facebook-> getUser()时,它总是返回0(声称我没有登录到FB,但是我已经进入了Facebook ..
只有当我从Facebook登录到应用程序时它才有效..任何想法如何解决这个问题?
谢谢, 尤瓦
答案 0 :(得分:1)
如果getUser()返回0,则查看用户未授予您的应用程序权限。
即使您是该应用程序的开发人员,它也会对您有所帮助,但如果您的帐户表现特殊,则很难进行多少测试。
据说,这很容易。
如果getUser()返回0,则将用户重定向到登录URL。假设他们接受你就可以正确使用getUser()。
请参阅:https://github.com/facebook/php-sdk/blob/master/examples/example.php以获得一个好例子
答案 1 :(得分:1)
这就是我做的......
调用getUser(),如果结果为0,则重定向到登录url或getLoginUrl()。一旦它访问该应用程序,它将具有GetUser的值以及来自Facebook的签名请求。
如果您使用应用程序访问getLoginUrl的第一个计时器将带您进入App Permission请求,您必须接受该请求才能使用Facebook应用程序。
答案 2 :(得分:1)
解决方案:
在弄乱了很多建议后,我发现答案既简单又愚蠢。 以下代码中的“'”不是真正的单引号(或称为它们的任何名称)。而是使用“'”,这是不同的东西,不被认可。
基本上'!='
原始代码:
$config[‘appId’] = 'x0x2x1x9xx3x98x';
$config[‘secret’] = 'xxx79xf7x6xxx5xxxfxxxc5bx46xfxxx';
$config[‘fileUpload’] = false; // optional
固定代码:
$config['appId'] = 'x0x2x1x9xx3x98x';
$config['secret'] = 'xxx79xf7x6xxx5xxxfxxxc5bx46xfxxx';
$config['fileUpload'] = false; // optional
我所做的就是用“'”替换“'”,这使我的文本编辑器将名称识别为引用的字符串。我上传了它,它工作了!我认为这是一个改变角色的某个地方的编码问题,这是有道理的。这意味着FB团队最初编写的代码很好,但人们对它有正确的问题。
答案 3 :(得分:0)
我仍然不确定为什么我的服务器中的代码每次调用$ facebook-> getUser()时都返回0,但我找到了一个解决方法:当你创建Facebook对象时,将参数'cookie'设置为是这样的:
$facebook = new Facebook(array(
'appId' => MY_APP_ID,
'secret' => MY_APP_SECRET,
'cookie' => true
));
$userId = $facebook->getUser();
if(!empty($userId)) {
echo "This is the user id : " . $facebook->getUser();
}
我在这里找到了这些信息 https://github.com/facebook/php-sdk/issues/418#issuecomment-2705981
我希望这些信息有用,因为我一直在寻找一种让这项工作有效的方法。