2013-06-02 39 views
31

私が取り組んでいるウェブサイトはFacebookのログインオプションを持っていますが、最近、ユーザーはそれが働いていないと報告しました。FacebookログインAPI HTTPS問題

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> 
+5

私はこれについての回答も確認しています。最近のChrome/Safariのセキュリティアップデートが、別のウィンドウでモーダルを開く必要があるときにFacebookのすべてのやりとりを殺したようです。プロトコルの不一致エラー(上記)は、開発者が使用されるプロトコルを制御できないため、特に不満です。 –

+0

ええええええええええええええええええええええええええええええええええええええええええええええええええええん、私はFirefoxでチェックしましたが、「[16:51:47.802] Mutation Eventsの使用は廃止されました。 net/rsrc.php/v2/y4/r/dePwLAaASOW.js:59 " – SapphireSun

+0

ここで設定したfb設定を確認しましたか? – Farnsbert

答えて

-3

これは価値があるため、私はこの問題をHTTPSに変換することで問題を解決しました(これは私がやっていたはずのことです)。

6

あなたはjavascriptのSDKの非同期をロードしていない場合、あなたはこのエラーをたくさん見ることができました。

を参照してください:あなたはIFRAMEコードを介して、任意のFacebookのプラグインを使用している場合は、ほかにhttps://developers.facebook.com/docs/javascript/quickstart

、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> 
+0

私はFacebookのログインのためのポップアップ別ウィンドウを使用しています。私はプラグインとしてカウントするかどうかは分かりません。私はSDKコードによって埋め込まれたいくつかのiframeがあることを知っています。価値のあるものについては、このコード(関連するパーツをカスタマイズしたもの)が私のアプリケーションの足元にあります。 – SapphireSun

+1

あなたのコードを見て、どのようにレイアウトされているのか、サファイアをごめんなさい.Async版のJS SDKを交換するように指示するよりもずっと助けてくれるはずがありません。 –

+1

私のページの足元にあるコードを質問の先頭に追加しました。 – SapphireSun

1


は、静的なページに自分のFacebookの呼び出しを移動 ...

(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/pt_BR/all.js#xfbml=1&appId=IDDDD"; 
fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk')); 

は、AJAXコールバックを設定します。

try{setTimeout(FB.XFBML.parse);}catch(e){} 

happy :)

jクエリの例:

3

私の開発環境で同じ問題がありました。 解決する手順(どちらが正しいかわからない):

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

私は、私はそれにいくつかの時間を費やしていない限り、このようなブードゥー教の回答で答えていないだろう、とそこから私を取得するために魔法の任意の並べ替えを大切でしょう。

+0

確かに。それが私の問題でした。テストが簡単 - ブラウザをシークレットモードまたはプライベートモードで読み込みます。エラーが消えた場合は、クッキー/セッションの問題を示しているようです。 – cyberwombat

関連する問題