31

私が取り組んでいる Web サイトには Facebook のログイン オプションがありますが、最近、ユーザーがそれが機能していないと報告しました。拡張機能などを無効にすると、コンソールに次のエラーが表示されました。

Blocked a frame with origin "https://www.facebook.com" from accessing a frame 
with origin "http://static.ak.facebook.com".  The frame requesting access has 
a protocol of "https", the frame being accessed has a protocol of "http". 
Protocols must match.

同じプロトコルで動作させる API にフィードできるオプションはありますか? 参考までに、主要な Web サイトは HTTP (S なし) で実行されます。

突然機能しなくなったように見えるため、特に奇妙です(ただし、私は新しく、このシステムを学習しているため、これは常に問題であった可能性があります)。

ページの下部に次のコードがあります。

<div id="fb-root"></div>
<script>
    window.fbAsyncInit = function() {
        FB.init({
            appId  : ..., // App ID
            status : true, // check login status
            cookie : true, // enable cookies to allow the server to access the session
            xfbml  : true,  // parse XFBML
            channel: '//...mychannel.../channel'
        });

        FB.Event.subscribe('auth.authResponseChange', function(fbResponse) {
            // function that logs in user
        });
    };

    // Load the SDK Asynchronously
    (function(d){
        var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
        if (d.getElementById(id)) {return;}
        js = d.createElement('script'); js.id = id; js.async = true;
        js.src = "//connect.facebook.net/en_US/all.js";
        ref.parentNode.insertBefore(js, ref);
    }(document));
</script>
4

4 に答える 4

6

JavaScript SDK async をロードしていない場合、このエラーが頻繁に発生する可能性があります。

参照: https://developers.facebook.com/docs/javascript/quickstart

さらに、iframe コードを介して Facebook プラグインを使用している場合は、src url プロトコルが一致していることを確認してください。

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    // init the FB JS SDK
    FB.init({
      appId      : 'YOUR_APP_ID',                        // App ID from the app dashboard
      channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel file for x-domain comms
      status     : true,                                 // Check Facebook Login status
      xfbml      : true                                  // Look for social plugins on the page
    });

    // Additional initialization code such as adding Event Listeners goes here
  };

  // Load the SDK asynchronously
  (function(d, s, id){
     var js, fjs = d.getElementsByTagName(s)[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement(s); js.id = id;
     js.src = "//connect.facebook.net/en_US/all.js";
     fjs.parentNode.insertBefore(js, fjs);
   }(document, 'script', 'facebook-jssdk'));
</script>
于 2013-06-06T07:36:47.490 に答える
3

私の開発環境でも同じ問題がありました。解決する手順 (どちらが実行したかは不明):

  1. アプリケーションからログアウトします。
  2. ブラウザからすべての Cookie を削除します。
  3. 目的のユーザーとして FB にログインします (開発者ページではなく、ユーザー アプリのアクセス許可ページ)。
  4. FB 権限ページからアプリの権限を削除します。
  5. FBからログアウトします。
  6. アプリをリロードしてログインしてみてください。

何時間も費やしていない限り、そのようなブードゥー教の答えには答えなかったでしょう。

于 2013-07-19T13:37:27.937 に答える
-3

価値があるのは、HTTPSに変換することでこの問題を解決することができたということです(これはとにかく私がやるべきだったことです)。

于 2013-10-04T18:39:37.000 に答える