如何防止Facebook在应用浏览器中打开我的网站链接?

问题描述 投票:7回答:5

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

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

javascript android ios facebook facebook-graph-api
5个回答
3
投票

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


7
投票

我无法让我的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>

0
投票

基于Mcbeese

<!-- 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>

0
投票

或者......不那么复杂。为什么有一个名为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应用程序时)


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.