【问题标题】:Redirect to facebook app through app-website通过 app-website 重定向到 facebook 应用
【发布时间】:2012-01-24 08:18:43
【问题描述】:

我制作了一个应用程序作为页面选项卡。如果有人直接打开网站 url,我需要重定向到 facebook-app。为此,我需要检查地址栏的内容,如果其中不包含 www.facebook.com,我将重定向到 facebook-app url。但是,问题是在 facebook iframe 中我无法获取地址栏的内容。

如果有人直接访问我的网站网址,您能否告诉我启用重定向到 fb-app 的好方法?

【问题讨论】:

    标签: php javascript facebook facebook-apps


    【解决方案1】:

    实现这一点的最简单方法可能是在JavaScript 进行下一次检查:

    if (window.top !== window){
      window.location = 'http://facebook.com/YOUR_PAGE?sk=v_YOUR_APP_ID'
    }
    

    【讨论】:

    • 我在初始代码中犯了一个错误,应该是===而不是!==
    【解决方案2】:

    如果您想重定向到一个选项卡,一个更完整的方法是检查仅在页面选项卡的签名请求中发送的“页面”参数。

    原因是仅检查签名请求将允许用户在 Facebook 画布中访问您的 520 像素标签应用程序(即https://apps.facebook.com/yourapp,这可能不是您想要的。

    例如

        $fb = new Facebook( array(
                              'appId' => <your_app_id>, 
                              'secret' => <your_app_secret>); 
        $sr = $fb -> getSignedRequest();
    

    然后在用户点击页面时重定向

        if (!($sr['page'])) {
            die('<script>window.top.location = "<your_tab_url>"</script>');
        };
    

    【讨论】:

      【解决方案3】:

      当您在粉丝专页中打开应用时,Facebook 会发布一个签名的请求参数。

      您可以检查该参数是否为空。

      在php中,

      if(isset($_REQUEST["signed_request"]){
      // Opened in facebook
      }else{
      
      //opened outside facebook.
      }
      

      在 asp.net 中

          if(Request.Form["signed_request"] !=null)
          { 
            // Opened in facebook
      }
      else
      {
      // opened outside facebook.
      }
      

      【讨论】:

      • 但我不认为这可以在我的应用程序的每个页面中使用,因为签名的请求仅在第一页上,不是吗?
      • 收到签名请求后设置 cookie。并在以后的页面中检查。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-12
      • 2012-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多