【问题标题】:Facebook canvas url redirected to httpsFacebook 画布 URL 重定向到 https
【发布时间】:2012-02-08 15:59:17
【问题描述】:

我有一个 Facebook 应用程序,其中包含画布 URL 和安全画布 URL。

当我的用户在页面选项卡中打开应用程序时,我的应用程序会读取 signed_requestpage id 并为该特定 FB 页面提供内容。

当我的用户在 FB 中使用 https 冲浪时注销并且下一个用户仅使用 http 冲浪登录时,我的应用程序被重定向到安全画布 URL 并且我的 signed_request 参数丢失强>。如果没有 signed_request 参数,我无法确定我的应用应该提供哪个页面。

当我清空浏览器缓存时,会使用我应用的正确 http URL。

有没有办法在 FB 应用程序中始终使用 https,或者阻止浏览器缓存 https URL?

谢谢!

【问题讨论】:

  • 对不起,我不这么认为你是对的。无论如何,Facebook 都会使用 $_POST['signed_request'] 调用您的应用程序。此外,我的标签应用程序每次都通过 https 被 Facebook 调用,无论是通过 http 还是 https 加载的 FB 页面。
  • 好的,问题似乎是 Chrome 特有的:stackoverflow.com/questions/8571339/…

标签: facebook canvas https


【解决方案1】:

如果您想从 http 重定向到 https 并且不丢失 signed_request POST 参数,您可以在重定向之前手动捕​​获它并将其作为 GET 参数附加到 URL。见下文!

// Force SSL
if(443 != $_SERVER['SERVER_PORT'] || 'on' != $_SERVER['HTTPS'])
{
    $queryString = $_SERVER['QUERY_STRING'];
    $hadQueryString = '' == $queryString ? false : true;
    $baseUrl = $_SERVER['REQUEST_URI'];
    $questionMark = strpos($_SERVER['REQUEST_URI'], '?');

    if(false !== $questionMark)
    {
        $baseUrl = substr($_SERVER['REQUEST_URI'], 0, $questionMark);
    }

    if($hadQueryString && isset($_REQUEST['signed_request']))
    {
        $queryString = $_SERVER['QUERY_STRING'] . '&signed_request=' . $_REQUEST['signed_request'];
    }
    elseif(isset($_REQUEST['signed_request']))
    {
        $queryString = 'signed_request=' . $_REQUEST['signed_request'];
    }

    $newLocation = 'https://' . $_SERVER['HTTP_HOST'] . $baseUrl . '?' . $queryString;

    header('HTTP/1.1 301 Moved Permanently');
    header('Location: ' . $newLocation);
    exit();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    • 2011-11-01
    相关资源
    最近更新 更多