Php Facebook在应用程序授权后重定向到画布url而不是画布页面

Php Facebook在应用程序授权后重定向到画布url而不是画布页面,php,facebook,facebook-canvas,Php,Facebook,Facebook Canvas,我得到了来自的帮助,了解当有人访问canvas页面但尚未授权该应用程序时,如何重定向到Facebook授权页面 现在,我希望在用户授权权限后,FB将重定向到画布页面()。但它正在重定向到画布url(.) 这是预期的还是我们可以做些什么来控制它。如何告诉API在授权后重定向到画布页面 现在我可以考虑使用$_服务器[HTTP\u REFERER]查看我是否来自授权页面,如果是,则再次将页面重定向到画布页面。但我希望有更好的方法来做 画布url代码: if (Config::$fbAvailalbe)

我得到了来自的帮助,了解当有人访问canvas页面但尚未授权该应用程序时,如何重定向到Facebook授权页面

现在,我希望在用户授权权限后,FB将重定向到画布页面()。但它正在重定向到画布url(.)

这是预期的还是我们可以做些什么来控制它。如何告诉API在授权后重定向到画布页面

现在我可以考虑使用$_服务器[HTTP\u REFERER]查看我是否来自授权页面,如果是,则再次将页面重定向到画布页面。但我希望有更好的方法来做

画布url代码:

if (Config::$fbAvailalbe){ //see below how this variable is derived
    echo "fb is available";
    $facebook = new Facebook(array(
      'appId'  => Config::$appId,
      'secret' => Config::$appSecret,
    ));

    $user = $facebook->getUser();

    if ($user) {
        echo "app installed";
      try {
        // Proceed knowing you have a logged in user who's authenticated.
        $profile = $facebook->api('/me');
      } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
      }
    }

    if (!$user) {
      echo " app not installed gonna redirect"; 
      $scope = "scope=email,read_stream,read_friendlists,publish_stream";
      $redirect = $facebook->getLoginUrl(
                    array(
                        'canvas' => 1,
                        'fbconnect' => 0,
                        'req_perms' => $scope
                        )
                    );
      echo '<script>top.location="' . $redirect . '";</script>';
      exit();
      //header("Location: $redirect".$scope);
    } 

    if ($profile){
        $firstName = $profile['first_name'];
        $sid = $profile['id'];
        var_dump($profile);
    }else{
        echo "unable to get profile";
    }

}else{

    echo "fb unavailable, using dmmy";
    $firstName = "Dummy Name";
    $sid = Config::$testsid;

}
检查文档

代码中有两个错误

错误#1:

错误#2:

根据文件(截至目前)

请求参数为“范围”

不确定“canvas”和“fbconnect”参数,这些参数可能会被忽略,因为它们不再受支持

$redirect = $facebook->getLoginUrl(
                    array(
                        'scope' => $scope,
                        'redirect_uri' => 'https://app.facebook.com/myapp'
                        )
                    );

我现在收到“发生错误,请稍后再试。”。它与过时的参数有关吗?没有“canvas”和“fbconnect”参数,所以看起来“req_perms”现在只是“scope”?我现在已经找出了确切的错误,并在您的答案中编辑了代码。一旦您接受我的编辑,我将接受此选项:)
$scope = "scope = email,read_stream,read_friendlists,publish_stream";
$redirect = $facebook->getLoginUrl(
                    array(
                        'scope' => $scope,
                        'redirect_uri' => 'https://app.facebook.com/myapp'
                        )
                    );