6

新しい Facebook Javascript SDK を使用すると、どの Web サイトでも Facebook ユーザーとしてログインし、ユーザーのデータを取得できます...

したがって、Facebook の Javascript を含む www.example.com になりますが、私が思い出したように、そのスクリプトは www.example.com の起源であると見なされ、違反であるため facebook.com からデータを取得できません。 「同一オリジンポリシー」の。そうじゃない?その場合、スクリプトはどのようにデータをフェッチしますか?

4

3 に答える 3

5

ここから: https://developer.mozilla.org/en/Same_origin_policy_for_JavaScript

同じオリジン ポリシーは、あるオリジンから読み込まれたドキュメントまたはスクリプトが、別のオリジンからドキュメントのプロパティを取得または設定することを防ぎます。このポリシーは、Netscape Navigator 2.0 までさかのぼります。

ここでは少し異なる説明があります: http://docs.sun.com/source/816-6409-10/sec.htm

同じオリジン ポリシーは次のように機能します。あるオリジンからドキュメントをロードする場合、別のオリジンからロードされたスクリプトは、ウィンドウまたはフレーム内の特定のブラウザーおよび HTML オブジェクトの特定のプロパティを取得または設定できません (表 14.2 を参照)。

Facebook スクリプトは、ドメインからのスクリプトとの対話や DOM オブジェクトの読み取りを試みていません。Facebookへの独自の投稿を行うだけです。ページやサイトのスクリプトと対話するのではなく、フォームに入力して「いいね」ボタンを取得するときに生成されるスクリプト自体により、サイト名を取得します。「 http://www.bogussite.com 」という名前のサイトを登録し、自分の Web サイトに配置するコードを取得しました。このコードで最初に考えたのは

iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.bogussite.com&

そのため、スクリプトは、iFrame へのリンクにハードコーディングされた URL パラメーターによってサイト情報を明確に取得しています。

Facebook の Web サイトは、サーバー上でホストされているスクリプトをユーザーに使用させているだけではありません。このように機能するスクリプトは他にもたくさんあります。たとえば、Google Gears、Google Analytics などを含むすべての Google API では、サーバーでホストされているスクリプトを使用する必要があります。ちょうど先週、モバイル フレンドリーな Web アプリのストア ファインダーでジオロケーションを実行する方法を見つけようとしていたときに、スクリプトをコピーするのではなく、サーバーでホストされているスクリプトを使用する多数のジオロケーション サービスを見つけました。あなたのサーバーに。

于 2010-10-24T03:30:23.803 に答える
0

確かではありませんが、iframe メソッドを使用していると思います。少なくともキャンバス アプリのクロス ドメイン レシーバーと xfbml はそれを使用します。基本的に、ページの JavaScript は facebook.com ドメイン内に iframe を作成します。その iframe には、facebook で必要なことは何でも行う権限があります。親との通信は、URL ハッシュなどのいくつかの方法のいずれかを使用して行うことができます。しかし、彼らがその部分にどの方法を使用するかはわかりません。

于 2010-10-24T03:24:34.733 に答える
0

思い出すと、スクリプト タグの挿入が使用されます。そのため、JS SDK 呼び出しで Facebook を呼び出す必要がある場合、<script src="http://graph.facebook.com/whatever?params...&callback=some_functionスクリプト タグが現在のドキュメントに挿入されます。some_function({...})次に、Facebook は、実際のデータが ... 内にある場所として JSON 形式でデータを返します。これにより、関数 some_function がexample.com のオリジンで呼び出され、 graph.facebook.com からのデータが使用されます。

于 2010-10-24T03:37:05.747 に答える