0

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

我的问题如下:我正在使用 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->getUser() 总是返回零。AppId 和 AppSecret 是正确的,事实上,如果我将“redirect_uri”更改为我的应用程序域的任何页面,它都会起作用(例如:“redirect_uri”=>“ https://www.mysite.com/fb_callback ”)。

其他详细信息:签名的请求始终为空。你有什么主意吗?

非常感谢!

编辑这解决了我的问题 Facebook iframe 选项卡签名请求始终为空

4

1 回答 1

0

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

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

最后,有什么理由你不使用:

header('Location: '.$loginUrl) ?

而不是注入javascript?

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

基本上,从 getUser() 调用记录错误(如果有)并查看该输出是什么。

于 2013-01-02T23:06:31.433 回答