web-dev-qa-db-ja.com

アプリのブラウザーでFacebookがWebサイトのリンクを開かないようにするにはどうすればよいですか?

私はWebアプリを開発していて、Facebookを使用してコンテンツを共有しています。直面している問題は、Facebookに投稿されたリンクをクリックすると、アプリのブラウザーでFacebookを使用して開くことがあり、多くの問題を引き起こします。

Facebookがリンクを無効にし、代わりにデバイスのデフォルトのブラウザーを使用するのを防ぐ方法はありますか?

12
Mustafa Dwekat

完全にユーザー次第であり、デフォルトのブラウザで強制的に開く方法はありません。このスレッドには詳細情報(およびいくつかの回答)があります: Facebookアプリ内ブラウザでファイルアップロードコントロールが機能しない

3
luschn

Facebookのアプリ内ブラウザーでjs動的グリッドを実行することはできませんでしたが、何が問題であり、実際のブラウザーで開く必要があるかどうかをユーザーに任せられませんでした。

私はjsを使用してFacebookアプリ内ブラウザーを検出し、jsアラートを使用して「サファリで開く」必要があることをユーザーに通知しようとしましたが、Facebookアプリ内ブラウザーではアラートが一貫してまたは確実に機能しません。

ユーザーアラートページへのリダイレクトが最も信頼できるソリューションであることがわかりました。必要に応じて提示できます(モーダルなど)。リダイレクトのコードサンプルが含まれています。リダイレクトページはFacebookブラウザー内に残ることに注意してください。ユーザーインタラクションのみが発生します。私はリダイレクトページを使用して、「共有> 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>
7
Mcbeese

または...それほど複雑ではありません。なぜisFacebookApp()という関数があり、なぜFBアプリ内ブラウザのみを探しているときにtarget 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アプリが検出されたとき)。

1
Philip La Vere

Androidは Firebase Dynamic Links を開きます)== URLが投稿されたWebviewの種類に関係なく、外部ブラウザによって見つかりました.

私は https://stackoverflow.com/a/56143217/3000586 でより詳細な説明を書きました。

0
starshine wang

マクビースに基づく

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