【问题标题】:How to prevent Facebook in app browser from opening my website links?如何防止应用浏览器中的 Facebook 打开我的网站链接?
【发布时间】:2016-07-23 23:24:51
【问题描述】:

我正在开发网络应用程序并使用 Facebook 分享我的内容,我面临的问题是当有人点击 Facebook 上发布的链接时,有时它会在应用程序浏览器中使用 Facebook 打开,这会导致很多问题。

有没有办法阻止 Facebook 看到我的链接并改用设备默认浏览器?

【问题讨论】:

  • 用一个模态弹出窗口覆盖页面如何要求人们在他们的外部浏览器中打开链接?

标签: javascript android ios facebook facebook-graph-api


【解决方案1】:

我发现Android会通过外部浏览器打开Firebase Dynamic Links,无论该url发布的是哪种webview。

我在https://stackoverflow.com/a/56143217/3000586写了更详细的描述。

【讨论】:

    【解决方案2】:

    或者……不那么复杂。为什么要有一个名为 isFacebookApp() 的函数,以及当您只在寻找 FB 应用内浏览器时为什么要针对 Opera?

    <script>
      var ua = navigator.userAgent;
    
      if (ua.indexOf("FBAN") != -1 || ua.indexOf("FBAV") != -1) {
        if (!window.location.href.match('redirect_fb')) {
          window.location.href = "https://example.com/redirect_fb";
        }
      }
    
    </script>
    

    谢谢你们俩。这让我发疯了。我的主要问题是我的 Android 上的字体被放大了。现在我发现使用 fontsz = Math.round(fontsz*.7) 减少是完美的抵消(当检测到 FB 应用程序时)

    【讨论】:

      【解决方案3】:

      基于麦克比斯

      <!-- check if running in facebook app -->
          <script>
      
          var ua = navigator.userAgent || navigator.vendor || window.opera;
      
          function isFacebookApp() {
              return (ua.indexOf("FBAN") > -1) || (ua.indexOf("FBAV") > -1);
      
          }
      
          if (isFacebookApp()) {
            if (!window.location.href.match('redirect_fb')) {
              window.location.href = "https://example.com/redirect_fb";
            }
          }
      
          </script>
      

      【讨论】:

        【解决方案4】:

        我无法让我的 js 动态网格在 Facebook 应用内浏览器中运行,但我不能让用户自己找出问题所在以及他们需要在真正的浏览器中打开.

        我使用 js 来检测 Facebook 应用内浏览器,并尝试使用 js 警报来通知用户他们需要“在 safari 中打开”,但警报无法与 Facebook 应用内浏览器一致或可靠地工作.

        我发现重定向到用户警报页面是最可靠的解决方案。它可以按照您的意愿呈现(模态等)。包含重定向的代码示例。请注意,重定向页面保留在 Facebook 浏览器中 - 只有用户交互才能中断。我使用我的重定向页面告诉人们使用“共享 > 在 Safari 中打开”功能。

        当用户点击“在 safari 中打开”时,重定向页面会在 safari 中重新加载,检测到它现在不在 Facebook 应用内浏览器中,并自动将用户重定向回他们最初想要的页面,但不再来自 Facebook 应用内浏览器。让用户退出应用内浏览器的“一键式”解决方法。

        最好的解决方案仍然是让我的 js 网格有一天在 Facebook 浏览器中“正常工作”。如果有人知道,请告诉我。

        <!-- check if running in facebook app -->
            <script>
        
            var ua = navigator.userAgent || navigator.vendor || window.opera;
        
            function isFacebookApp() {
                return (ua.indexOf("FBAN") > -1) && (ua.indexOf("FBAV") > -1);
            }
        
                if (isFacebookApp()) {
                    window.parent.location.assign("https://yourdomain.com/redirect_page/index.html");
                }
        
            </script>
        

        【讨论】:

          【解决方案5】:

          这完全取决于用户,没有办法强制在默认浏览器中打开它。此线程中有更多信息(和一些答案):File upload control not working in Facebook In-App Browser

          【讨论】:

          • 这个答案说“不可能”,但它下面的答案清楚地表明了“一种方法”。为什么这是公认的答案?
          • 通过一些研究,我们认为检测用户代理,然后显示弹出窗口或模式通知用户切换到真正的 Safari 浏览器是这样做的“方法”。所以我不赞成这个答案,因为它显然是错误的——有“一种方式”——这不是一种技术方式,而是一种用户交互方式。
          • 对不起,但这并没有使我的回答出错。你仍然不能“强迫”它,问题是完全避免它。
          • 您确实是正确的,没有办法“强制”用户退出应用内浏览器
          • 究竟是什么方法?如果您的意思是其他答案,那并不是真正的解决方案。当然,您可以检测到 facebook 浏览器并重定向到某个页面,但它仍然会在该 facebook 浏览器中发生。问题是如何“防止”它甚至发生,这是不可能的。
          猜你喜欢
          • 2016-06-06
          • 2017-07-13
          • 2012-04-30
          • 1970-01-01
          • 2017-07-23
          • 2012-05-30
          • 2014-01-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多