繁体   English   中英

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

[英]How to prevent Facebook in app browser from opening my website links?

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

有没有一种方法可以防止Facebook访问我的链接并改用设备默认浏览器?

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

我使用js来检测Facebook应用程序内浏览器,并尝试使用js警报来通知用户他们需要“在野生动物园中打开”,但是警报无法与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>

它完全由用户决定,没有办法强制在默认浏览器中打开它。 此线程中有更多信息(和一些答案): 文件上载控件在Facebook应用程序内浏览器中不起作用

或...不那么复杂。 为什么根本没有一个叫做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应用程序时)

基于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>

我发现,无论发布哪种网址,Android都会通过外部浏览器打开Firebase动态链接

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM