Php Facebook应用程序画布页面未加载

Php Facebook应用程序画布页面未加载,php,facebook,codeigniter,facebook-sdk-3.0,Php,Facebook,Codeigniter,Facebook Sdk 3.0,当我尝试使用我为Facebook创建的应用程序时,我总是遇到这个错误。当我打开应用程序的url时,它会将我带到登录页面,但当我登录时,会出现一个带有错误的弹出框 应用程序未设置:此应用程序的开发人员尚未设置此应用程序 正确登录Facebook 每次我点击ok,它就会再次重新加载弹出窗口 我已经在我的仪表板中更改了satatus,使其处于状态并进行了查看 当我在facebook上登录我的帐户时,它工作正常,但我想这是因为我在仪表板上被设置为应用程序的管理员 但其他用户也遇到了上述问题 使用的代码:

当我尝试使用我为Facebook创建的应用程序时,我总是遇到这个错误。当我打开应用程序的url时,它会将我带到登录页面,但当我登录时,会出现一个带有错误的弹出框

应用程序未设置:此应用程序的开发人员尚未设置此应用程序 正确登录Facebook

每次我点击ok,它就会再次重新加载弹出窗口

我已经在我的仪表板中更改了satatus,使其处于状态并进行了查看

当我在facebook上登录我的帐户时,它工作正常,但我想这是因为我在仪表板上被设置为应用程序的管理员

但其他用户也遇到了上述问题

使用的代码:

require_once('facebook-php-sdk/src/facebook.php');

        $facebook= new Facebook(array(
          'appId' => $this->config->item('app_id'),
              'secret' => $this->config->item('app_secret'),
              'allowSignedRequest' => true,
        ));

        $_REQUEST += $_GET;
        $user = $facebook->getUser();

        if ($user) {
          try {

            $user_profile = $facebook->api('/me?fields=picture.width(100).height(100),first_name,last_name,username,email');

          } catch (FacebookApiException $e) {
            $user = null;
          }
        } else {
           $login_url = $facebook->getLoginUrl(array(
                'scope' => 'email'
            ));

           redirect($login_url, 'refresh');
        }
这段代码在我的codeigniter应用程序的控制器中,我创建了这个应用程序

我该如何解决这个问题

更新:

在我将应用程序添加为画布应用程序后,这个错误似乎消失了,但是仍然存在一个问题

我添加了Facebook应用程序平台,并输入了画布url、安全画布url等

当我在画布页面转到应用程序时
https://apps.facebook.com/MyApp/
-我想我是一名应用程序管理员,所以它工作得很好

但是,当外部用户转到画布页面时,它只是保持空白,但是如果用户转到画布url
http://apps.mydomain.com/MyAPP
该应用程序请求他们的权限,作为一个网站可以正常工作

对于画布页面上的用户,它只是保持空白。为什么画布页面不请求许可

请帮忙

编辑:

require_once('facebook-php-sdk/src/facebook.php');
$facebook=新的facebook(数组)(
“appId”=>this->config->item('app_id'),
'secret'=>this->config->item('app_secret'),
“allowSignedRequest”=>为真,
));
$\u请求+=$\u获取;
$user=$facebook->getUser();
如果($user){
试一试{
$user_profile=$facebook->api('/me?fields=picture.width(100)、height(100)、first_name、last_name、username、email');
}捕获(FacebookApiException$e){
$user=null;
}
}否则{
$login\u url=$facebook->getLoginUrl(数组)(
“范围”=>“电子邮件”
));
需要一次(“facebook-php-sdk/src/facebook.php”);
$facebook=新的facebook(数组)(
“appId”=>this->config->item('app_id'),
'secret'=>this->config->item('app_secret'),
“allowSignedRequest”=>为真,
));
$\u请求+=$\u获取;
$user=$facebook->getUser();
如果($user){
试一试{
$user_profile=$facebook->api('/me?fields=picture.width(100)、height(100)、first_name、last_name、username、email');
}捕获(FacebookApiException$e){
$user=null;
}
}否则{
$login\u url=$facebook->getLoginUrl(数组)(
“范围”=>“电子邮件”
));
echo(“top.location.href=”。$login\u url。””;
}
为什么画布页面不请求许可

因为您在iframe内部重定向,但是FB登录对话框不希望显示在(i(frames)中–很明显,这将导致大量网络钓鱼,因为用户应该看到他们输入登录凭据的页面实际上也是真实的FB站点

因此,您必须通过JavaScript在顶部窗口实例中重定向:

top.location.href = '…';

你可以添加你的facebook应用程序吗screenshos@RakeshSharma感谢您查看此内容。请查看问题的更新。非常感谢您的帮助。不确定此代码。请查看我在上面的编辑。这样行吗?我在
href=''
中将其指向哪个url?有点困惑。好的,它现在已加载,但当美国er登录到canvas url而不是facebook canvas pageWell,然后在创建登录url时设置正确的重定向URI…或者使用JS SDK中的FB.login登录客户端(顺便说一句,这看起来更好,因为它只是将一个对话框与登录对话框重叠,并且不重定向)。好的。我会看一下。另外,如果用户已经登录,请求权限的对话框会出现两次?不确定如何显示
top.location.href = '…';