1

これが私の状況です。クリックすると、それをホストするサードパーティのサイトでポップアップを起動する Javascript プラグインがあります。その popop は、ログイン方法として Facebook を使用している IFRAME を表示します。

ポップアップが起動されると、最近エラーが発生し始めました:

安全でない JavaScript が、URL https://s-static.ak.facebook.com/connect/xd_arbiter.php?version=18のフレームから URL http://{THIRD-PARTY-SITE-GOES-HERE} のフレームにアクセスしようとしています。 #channel= …%3Dtabmodule%26utm_term%3D200000%26fb_xd_fragment%23xd_sig%3Df2ade8e518%26.

アクセスを要求するフレームには「https」のプロトコルがあり、アクセスされるフレームには「http」のプロトコルがあります。プロトコルが一致する必要があります。

IFRAME 自体は https 上にあり、正常に動作していました。Chrome が親ページにアクセスしようとしている理由がわかりません。親ページを制御できないため、https にすることはできません。

IFRAME 内からの私の FB 初期化コードは次のとおりです。

    window.fbAsyncInit = function() 
    {
        FB.init({
            appId: '{myappid}', 
            status: true, 
            cookie: true, 
            xfbml: true, 
            oauth: true,
            channelURL : 'https://degree3.com/channel.php'
        });

        FB.getLoginStatus( function(response) 
        {   
            if (resp = response.authResponse) 
            {
                $( '#fb_button' ).attr( "onclick", "signinViaFacebook( response.authResponse.userID, response.authResponse.accessToken );" ).show();
            } 
        });
    };
    (function() 
    {
        var e = document.createElement('script'); e.async = true;
        e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
        document.getElementById('fb-root').appendChild(e);
    }());

エラーを修正する方法はありますか?

4

1 に答える 1

0

iframe内でFacebookログインを使用することはできません。これは機能しません。私が同じことをしようとして数時間イライラする時間を費やしたことを気にしないでください。現在のhttpsの問題を解決しても、同じオリジン(つまり、Facebook)からのリクエストのみを受け入れるFacebookの応答ヘッダーにオプションが設定されているため、Xフレームオプションエラーが発生します。

私が基本的に言おうとしているのは、セキュリティ上の理由から、FacebookをIframeで起動することはできないということです。現在の苦境における最善の策は、Facebookログインを含む別のポップアップを開くことです。Iframeは単に機能しません。エレガントに見えないことはわかっていますが、ポップアップ自体をFacebookにリダイレクトし、プラグインにリダイレクトするコールバックメカニズムを使用するか、それが唯一の方法です。

それが役に立てば幸い。

于 2013-02-13T06:05:06.260 に答える