Facebook PHP-SDK getUser()始终返回0

时间:2011-11-26 11:07:02

标签: php facebook facebook-php-sdk

  

可能重复:
  Why is Facebook PHP SDK getUser always returning 0?

我正在使用新的php SDK来创建一个非常简单的应用程序。 当我尝试$ facebook-> getUser()时,它总是返回0(声称我没有登录到FB,但是我已经进入了Facebook ..

只有当我从Facebook登录到应用程序时它才有效..任何想法如何解决这个问题?

谢谢, 尤瓦

4 个答案:

答案 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

我希望这些信息有用,因为我一直在寻找一种让这项工作有效的方法。