2013-06-18 12 views
9

私はこの1つと非常に似たエラーを出しています:Facebook Login API HTTPS IssueFacebookのようなボタンhttps問題:httpとhttpsからのプロトコルの不一致

私はFacebookのログインは問題ありません、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. 

と何の解決策を見つけること:クリックされたときしかし、Facebookが似ボタン(テストはOSXで、クロム、サファリ、Firefoxの上で失敗)問題を抱え取得するには、エラーメッセージがあります。

好きなボタンをクリックすると、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> 

が本当に必要とするようなボタンを使用してみましょう助けてください! Facebook上でJSコードを確認

+0

スクリプトsrcにプロトコルを追加しようとしましたか? – Mangiucugna

+1

httpまたはhttpsの代わりに//を使用している場合、ブラウザプロトコルに一致するプロトコルでリクエストをトリガすると仮定した場合、すべてのコードURLが// src = "// yoursite.com"で始まっていることを確認してください – talsibony

+0

ボタンのようなiframe版を試しましたか? – Jacob

答えて

4

あなたが使用することを明示的にFacebookを利用して伝えることができますHTTPS ...

の行を追加します。

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

は直下や場所で、FB.init関数呼び出しの前にそれを追加します。

// init the FB JS SDK 

これにより、Facebookのサーバーは、必要なライブラリをhttpsで終了させることができます。

これが役に立ちます。

+1

あなたは聖なる救い主でなければなりません。この問題はまだ存在しますが、あなたに感謝しています。 – Zh4rsiest

+0

ハ - 助けて幸せ、これはまだ約2年後の問題であると聞いて悲しい。私はあまりFB devをやりません! – steve

0

は、これらのエラーをトリガするファイルであることが可能です

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

のためにハードコードされた文字列を含む複数のURLが存在します。

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

サイドノートでは、Facebookからjsファイルをダウンロードしてサーバーに保存し、ハードコードされたhttp文字列を削除することができます。私はこれをさらにテストしますが、私は現時点で私の電話にいます。あなたの最初のスクリプトタグで

関連する問題