9

私はこれと非常によく似たエラーを実行しています: Facebook Login API HTTPS Issue

Facebook認証を使用するWebサイトがありますが、Facebookログインは問題ありません。しかし、Facebook のようなボタンをクリックすると問題が発生します (OSX の Chrome、Safari、Firefox でテストが失敗します)。エラー メッセージは次のとおりです。

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.

私はすべてを検索しましたが、解決策が見つかりません。

いいねボタンをクリックすると、 https://facebook.comコールバックからフレームが飛び出し、http://static.ak.facebook.comをリクエストしようとすると、プロトコルの不一致が発生するようです?!

<body>これが私がタグの直後に置いたものです

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    // init the FB JS SDK
    FB.init({
      appId      : 'appid',                        // App ID from the app dashboard
      channelUrl : '//mydomain/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/zh_TW/all.js";
     fjs.parentNode.insertBefore(js, fjs);
   }(document, 'script', 'facebook-jssdk'));
</script>

およびチャンネルファイルhttp://mydomain/channel

<script src="//connect.facebook.net/zh_TW/all.js"></script>

そして、これが私がいいねボタンを使用する方法です

<div class="fb-like" data-href=url data-send="true" data-width="450"
data-show-faces="true"></div>

本当に助けが必要です、お願いします!

4

2 に答える 2

4

最初のスクリプト タグで、Facebook に明示的に HTTPS を使用するように指示できます...

次の行を追加します。

FB._https = (window.location.protocol == "https:");

コメントのすぐ下または代わりに、FB.init 関数呼び出しの前に追加します。

// init the FB JS SDK

これにより、Facebook のサーバーは必要なライブラリを https 経由で確実にロードします。

お役に立てれば。

于 2013-10-23T15:13:40.420 に答える
0

Facebook で js コードを確認すると、ハードコードされた文字列を含む複数の URL があります。

http://static .../rsrc.php 

これらがエラーを引き起こしているファイルである可能性があります。

これは、Facebook が更新する必要があるものかもしれません。

余談ですが、その js ファイルを Facebook からダウンロードしてサーバーに保存し、ハードコードされた http 文字列を削除することができる場合があります。これをさらにテストしますが、現時点では電話を使用しています。

于 2013-10-17T19:17:37.893 に答える