Google Chrome (私は 9.0.597.98 を使用しています) で、Graph API/Javascript SDK を使用する私の Facebook iFrame アプリは、クロスドメイン スクリプティングに基づいて常に次の 2 つの JavaScript エラー (以下を参照) をスローする傾向がありますが、アプリの 1 つのページでのみ発生します。 .
2 番目のメッセージで無限の再試行ループに入ります。一晩放置した後、今朝までに 50 万回の再試行が報告されました。
使用されている FB 呼び出しはログイン用です。
FB.login(function(response) {
if (response.session) {
// user successfully logged in
} else {
// user cancelled login
}
});
Firefox と IE9 では、これらのエラーは発生しません。これは Chrome (おそらく WebKit) に固有のものです。
奇妙なのは、アプリに 2 番目のページがありFB.Login、他のブラウザーに加えてChrome で動作することです。Safari にはクロス ドメイン スクリプティングに関するより厳しい要件があることをどこかで読みました。Safari と Chrome は同じコード ベースを共有しています。
Domains, protocols and ports must matchFB.Login(エラー メッセージ)呼び出しで動作する別のページがあるため、実際には満足していると思います。これら 2 つのメッセージのその他の唯一の違いは、postmessageクエリ引数の値がそれぞれ異なることです (メッセージでは太字で示されています)。しかし、Facebook アプリを構成する iFrame は 1 つしかないため、なぜ 2 つの異なる値が次々に使用されるのでしょうか。この項目に焦点を当てるように回答を誘導するつもりはありませんが、指摘したいと思います。
このエラーを解決するために何を試みるかについての提案を歓迎します。
Chrome JavaScript コンソール メッセージ:
メッセージ 1 : 安全でない JavaScript が URL でフレームにアクセスしようとしています
https://www.facebook.com/dialog/permissions.request?api_key=168297653202478&app_id=168297653202478&display=popup&fbconnect=0&locale=en_US&method=permissions.request&next=http%3A%2F%2Fstatic.ak.fbcdn.net%2Fconnect%2Fxd_proxy. php%23cb%3Df3d15633dc%26origin%3Dhttp%253A%252F%252Fsubdomain.example.com%252Ff22a8befa%26relation%3Dopener%26transport%3D postmessage %26frame%3D f111baf6f4 %26result%3D%2522xxRESULTTOKENxx%2522&perms=publish_stream%2Coffline_access&return_session=1&sdk= joey&session_version=3 フレームからの URLhttp://subdomain.example.com/colonversationmap/Admin.TestPage.aspx?signed_request=871miFgH_-o05POnx20387XHd2YlArKLU6qUv8VkxY4.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImlzc3VlZF9hdCI6MTI5ODQyMDEwMSwidXNlciI6eyJjb3VudHJ5IjoiY2EiLCJsb2NhbGUiOiJlbl9VUyIsImFnZSI6eyJtaW4iOjIxfX19 . ドメイン、プロトコル、およびポートが一致する必要があります。
メッセージ 2 : 安全でない JavaScript が URL でフレームにアクセスしようとしています
https://www.facebook.com/dialog/permissions.request?api_key=168297653202478&app_id=168297653202478&display=popup&fbconnect=0&locale=en_US&method=permissions.request&next=http%3A%2F%2Fstatic.ak.fbcdn.net%2Fconnect%2Fxd_proxy. php%23cb%3Df304d46e08%26origin%3Dhttp%253A%252F%252Fsubdomain.example.com%252Ff23ce8203%26relation%3Dopener%26transport%3D postmessage %26frame%3D fcd3637bc %26result%3D%2522xxRESULTTOKENxx%2522&perms=publish_stream%2Coffline_access&return_session=1&sdk= joey&session_version=3 フレームからの URLhttp://subdomain.example.com/colonversationmap/Admin.TestPage.aspx?signed_request=871miFgH_-o05POnx20387XHd2YlArKLU6qUv8VkxY4.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImlzc3VlZF9hdCI6MTI5ODQyMDEwMSwidXNlciI6eyJjb3VudHJ5IjoiY2EiLCJsb2NhbGUiOiJlbl9VUyIsImFnZSI6eyJtaW4iOjIxfX19 . ドメイン、プロトコル、およびポートが一致する必要があります。