24

私のものは、キャンバスに基づく FB アプリです。Chrome と Firefox の両方で問題に直面しています (通常は Chrome ですが):

1.新しいシークレットChromeウィンドウ( https://apps.facebook.com/myfbappnamespace/ )で承認済みのfbアプリの安全なURLにアクセスすると、次のエラーが初めて発生し、ページを更新するとエラーが発生しますなくなりました(ほとんどの場合)

about:blank のページには、http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b …os.com%2Ff4aeadb2&domain=www.mydomain.com&relation=parent&error= からの安全でないコンテンツが表示され ました不明なユーザー。

安全でない JavaScript が、URL http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=のフレームから URL http://www.mydomain.com/control/myfacebookapp/のフレームにアクセスしようとしています。 f2e4fe7b …os.com%2Ff4aeadb2&domain=www.mydomain.com&relation=parent&error=unknown_user. アクセスを要求しているフレームは「document.domain」を「facebook.com」に設定しましたが、アクセスされているフレームはそうではありませんでした。アクセスを許可するには、どちらも「document.domain」を同じ値に設定する必要があります。
xd_arbiter.php:18

安全でない JavaScript が、URL http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=のフレームから URL http://www.mydomain.com/control/myfacebookapp/のフレームにアクセスしようとしています。 f2e4fe7b …os.com%2Ff4aeadb2&domain=www.mydomain.com&relation=parent&error=unknown_user. アクセスを要求しているフレームは「document.domain」を「facebook.com」に設定しましたが、アクセスされているフレームはそうではありませんでした。アクセスを許可するには、どちらも「document.domain」を同じ値に設定する必要があります。xd_arbiter.php:18

2. http url ( http://apps.facebook.com/myfbappnamespace/ ) を試すと、コンソールに次のエラーが表示されます。

安全でない JavaScript が、URL https://s-static.ak.facebook.com/connect/xd_arbiter.php?version=18#channel=のフレームから URL http://apps.facebook.com/myfbappnamespace/のフレームにアクセスしようとしています。 …Fcontrol%2Ffacebookappchannelurl%3Ffb_xd_fragment%23xd_sig%3Df23e84e85c%26. アクセスを要求するフレームには「https」のプロトコルがあり、アクセスされるフレームには「http」のプロトコルがあります。プロトコルが一致する必要があります。

これらのエラーで何が起こるかを確認するために fb アカウントにログインすると、エラーが消えてしまうことがあります。ここでクエリで「ほとんどの場合」と「時々」を使用していることは知っていますが、それはまさに私に起こっていることです。また、フォーラムを検索したところ、fb がクロム固有であるはずだったこの古い問題を既に修正していることに気付きました。FB.init およびその他の呼び出しが location.protocol 値固有であることを確認しました。また、キャンバス URL (http) とセキュア キャンバス URL (https) で正しい値を構成しました。また、両方の設定で試しました: アカウント設定 -> セキュリティ -> セキュア ブラウジング -> (有効と無効)

どこかで何かが足りない場合は、誰か助けてもらえますか?

4

2 に答える 2

23

考えられる問題はたくさんあります。次の解決策のいずれかを試してください。

  • プロトコルは同じである必要があります (したがって、iframe にアクセスしようとするページは、iframe を配信するサイトと同じプロトコルである必要があります)。そのため、アプリをサンドボックス モード (https ではなく http) でテストしている場合は、「セキュア」を無効にします。テスト アカウントのブラウジング モード
  • channelUrl on FB.init() (以下のコードを参照)
  • Apache のヘッダー mod を有効にして、以下の行を .htaccess に追加します。
  • <div id="fb-root"></div>ここのfbドキュメントで説明されているように、ボディタグの後に入れてください: https://developers.facebook.com/docs/reference/javascript/
  • ユーザー アクション (ログイン ボタンのクリックなど) の後にすべての自動ログイン コードを配置するようにしてください。
  • 次のように、Canvas URL(アプリ→設定)から末尾のスラッシュを削除しますhttp://yoursite.com?
  • <html>次のようにタグを編集します。<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="https://www.facebook.com/2008/fbml">

.htaccessのコード

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

チャネルの問題のコード:

FB.init({
    appId: '1234567890',
    status: true,
    cookie: true,
    xfbml: true,
    channelUrl : '//yoursite.com/channel.html'
});

サーバーから配信される channel.html には、次の 1 行が含まれている必要があります

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

編集

最初の問題について:

The page at about:blank displayed insecure content from http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b…os.com%2Ff4aeadb2&domain=www.mydomain.com&relation=parent&error=unknown_user.

これは、条件をテストするために使用される予想される例外です。これには副作用がないため、気にする必要はありません。

この質問を参照してください:安全でない JavaScript が URL のフレームにアクセスしようとしています: ドメイン、プロトコル、およびポートが一致する必要があります。

于 2013-03-03T10:25:10.363 に答える