【问题标题】:Redirect to Facebook page tab after authentication身份验证后重定向到 Facebook 页面选项卡
【发布时间】:2012-08-12 00:14:11
【问题描述】:

我有一个 facebook 页面,我在其中添加了我的应用程序的一个选项卡。我使用以下代码检查用户是否已通过身份验证:-

<?php
     $app_id = "MY APP ID";

     $canvas_page = "MY CANVAS PAGE";

     $auth_url = "https://www.facebook.com/dialog/oauth?client_id=" 
            . $app_id . "&redirect_uri=" . urlencode($canvas_page);

     $signed_request = $_REQUEST["signed_request"];

     list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

     $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);

     if (empty($data["user_id"])) {
            echo("<script> top.location.href='" . $auth_url . "'</script>");
     } else {
            echo("<script> location.href='index.php'</script>");
     } 
?>

现在CANVAS PAGE 必须与CANVAS PAGE 相同,我在应用程序中进行了更改,登录后页面重定向到https://apps.facebook.com/myappname/,但我希望它重定向到我的Facebook 页面标签;给这个 - https://www.facebook.com/myfbpage/app_82136128736123

【问题讨论】:

    标签: facebook facebook-php-sdk facebook-apps facebook-page facebook-canvas


    【解决方案1】:

    你是对的。 redirect_uri 必须是应用程序“拥有”的 URL。这意味着它已在应用程序设置中列出。

    您的画布页面必须使用 JavaScript 重定向(就像您正在使用的那样)。唯一的区别是您需要记住您的应用程序是在 iframe 中运行的。您必须更改 top 的 location 属性,而不是文档。 Top 引用页面上最顶层的框架,这是应用程序执行正确重定向的唯一方法。

    echo "<script language=javascript>";
    echo "top.location.href ='".$page_url."';";
    echo "</script>";
    exit();
    

    这很丑,很多人拒绝相信这是正确的做法,但我还没有找到替代方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      • 2019-07-11
      • 1970-01-01
      • 2018-03-28
      • 2011-09-15
      • 1970-01-01
      相关资源
      最近更新 更多