Facebook PHP SDK和页面选项卡;getUser()在授权过程之后始终返回0

Facebook PHP SDK和页面选项卡;getUser()在授权过程之后始终返回0,php,facebook,laravel,Php,Facebook,Laravel,我是一名PHP开发人员,对FacebookPHPSDK有很好的经验,但这次我迷路了:( 我的问题如下:我正在使用PHP框架Laravel开发facebook页面选项卡应用程序。这是我的代码: //getting the Facebook class instance $facebook = IoC::resolve('facebook-sdk'); if(!$facebook->getUser()){ $pagetab_url = 'https:/

我是一名PHP开发人员,对FacebookPHPSDK有很好的经验,但这次我迷路了:(

我的问题如下:我正在使用PHP框架Laravel开发facebook页面选项卡应用程序。这是我的代码:

    //getting the Facebook class instance
    $facebook = IoC::resolve('facebook-sdk');

    if(!$facebook->getUser()){
        $pagetab_url = 'https://www.facebook.com/PAGEUSERNAME?sk=app_APPID';    

        $loginUrlParams = array(
               'scope' => 'publish_stream',
               'redirect_uri' => $pagetab_url
        );

        $loginUrl = $facebook->getLoginUrl($loginUrlParams);

        echo("<script> top.location.href='" . $loginUrl . "'</script>");
    }
    else{
        echo $facebook->getUser();
    }
//获取Facebook类实例
$facebook=IoC::resolve('facebook-sdk');
如果(!$facebook->getUser()){
$pagetab\u url='1https://www.facebook.com/PAGEUSERNAME?sk=app_APPID';    
$loginUrlParams=数组(
'范围'=>'发布\u流',
'重定向\u uri'=>$pagetab\u url
);
$loginUrl=$facebook->getLoginUrl($loginUrlParams);
echo(“top.location.href=”。$loginUrl。“”);
}
否则{
echo$facebook->getUser();
}
这段代码生成了一个无限循环,因为$facebook->getUser()总是返回零。AppId和AppSecret是正确的,事实上,如果我将“redirect\u uri”更改为我的应用程序域的任何页面,它就会工作(例如:“redirect\u uri”=>)

其他详细信息:已签名的请求始终为空。 你知道吗

非常感谢

编辑 这解决了我的问题

我认为,与其注入脚本重新加载页面,不如让用户有机会登录到你的应用程序并进行授权

我遗漏了什么吗?(除非用户登录并授权了你的应用程序,否则你永远不会从$facebook->getUser()调用中得到结果)

最后,您是否有理由不使用:

header('Location: '.$loginUrl) ?
而不是注入javascript

您是否在多台服务器上进行开发?(可能是Localhost和测试服务器?)另一种可能是您在两个不同的域(例如Localhost和stage.whater.com)上进行测试,并且您需要授予应用程序在这两个域上工作的权限


基本上,记录来自getUser()的错误(如果有)打电话看看输出是什么。

是的,我在不止一台服务器上工作。我只需要在我的页面选项卡应用程序的一个页面中授权我的用户,因此当他们访问该页面时,我尝试获取他们的fb配置文件信息。如果getUser返回0,则我将他们重定向到$loginUrl,在授权过程后,我需要facebook重新记录将它们添加到我的页面选项卡页面(此步骤很容易实现,将应用程序_数据设置为已签名的_请求,但已签名的_请求在我的页面选项卡应用程序中始终为空)。与其在没有登录信息时重定向,不如让他们能够登录/授权。这通常不是重定向,而是一种JS方法或按钮,它使用Facebook的SDK创建带有登录信息的弹出窗口或新选项卡。通常你有一个视图(显示的页面)它根据用户是否登录有条件地显示内容,而不是重定向。这解决了我的问题