我正在使用 PHP 创建一个 facebook 应用程序,面临两个主要问题..

  1. 当我单击权限上的“允许”时,应用程序会将我带到我自己的域(存储应用程序的位置),而不是将其加载到 iFrame 中。

  2. 有时,当我单击“不允许”时,它仍然让我进入并显示 PHP 错误,而有时(大多数时候),它不让我进入。

可能是什么问题呢?有什么方法可以以编程方式重定向到权限页面吗?谢谢..

if(empty ($this->session))
    {
        try
        {
            $login_url = $this->facebook->getLoginUrl();
            header("Location: ".$login_url);
        }
        catch(Exception $e)
        {
            header("Location: http://www.facebook.com");
        }
    }
    else
    {
        try
        {
            $this->uid = $this->facebook->getUser();
        }
        catch(Exception $e)
        {
            header("Location: http://www.facebook.com");
        }
    }

请注意,我所做的重定向是为了尝试解决问题。但没有抛出异常。

有帮助吗?

解决方案 2

如果页面不在 iFrame 内,我使用这个简单的脚本来应用重定向...

if(parent == window)
                {
                    window.location = "http://apps.facebook.com/appname/";
                }

这可能不是一个法律解决方案,但为我解决了问题。谁知道合法途径请留言。谢谢。

其他提示

当您想要获取登录网址时,您可以根据需要传递不同的参数。在您的情况下,要返回 Facebook 页面网址,您可以使用 next 参数。

这是您修改后的代码:

$login_url = $this->facebook->getLoginUrl(
            array(
                'canvas'    => 1,
                'fbconnect' => 0,
                'next' => YOUR_CANVAS_PAGE_URL
            ) 
        );
if(empty ($this->session))
{
    echo "<script type='text/javascript'>top.location.href='$loginUrl';</script>";
    exit;
}
else
{
    try
    {
        $this->uid = $this->facebook->getUser();
    }
    catch(Exception $e)
    {
        echo "<script type='text/javascript'>top.location.href='$loginUrl';</script>";
        exit;
    }
}

如果它解决了您的问题,请告诉我:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top