Facebook App canvas页面未加载

时间:2014-01-25 20:59:01

标签: php facebook codeigniter facebook-sdk-3.0

当我尝试使用我为Facebook创建的应用时,我一直收到此错误。当我进入应用程序的URL时,它会将我带到登录页面,但是当我登录时,会出现一个弹出框,显示错误。

  

App Not Setup:此应用的开发者尚未设置此应用   适合Facebook登录。

每次点击确定,它都会重新加载弹出窗口。

我已经将satatus更改为Live in status并在我的仪表板中查看。

当我在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应用平台,并输入了画布网址,安全画布网址等。

当我在画布页面https://apps.facebook.com/MyApp/转到应用程序时 - 它可以正常工作,因为我是app app管理员。

但是,当外部用户转到画布页面时,它只是保持空白,但如果用户转到画布URL http://apps.mydomain.com/MyAPP,则应用程序会询问他们的权限,并且可以正常用作网站。

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

请帮助。

编辑:

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'
            ));

           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'
        ));

        echo("<script> top.location.href='" . $login_url . "'</script>");
        }

1 个答案:

答案 0 :(得分:0)

  

为什么画布页面不会要求许可?

因为你在iframe中重定向,但是FB登录对话框不希望显示在(i(帧)中 - 显而易见的原因,这会导致大量的网络钓鱼,因为用户应该看到他们输入登录凭据的页面实际上也是真正的FB网站。

所以你必须通过JavaScript在顶层窗口实例中重定向:

top.location.href = '…';