4
私は新しいjavascript sdkを使用しています。私はローカルに開発中です(つまり、ホストされていないサーバー)。Facebookのシングルサインオンはどのようにしてフード内で動作しますか?
js apiがローカルホストドメインのCookieに格納するアクセストークンを取得できました。しかし私が理解していないものは:fb jsがどのようにlocalhostのためのクッキーを設定することができます:
- これは同じ起源政策に違反しないのですか?
- fbが認証/承認にOauth 2.0プロトコルを使用する場合、コールバックURLを指定せずにメインページからのリダイレクトがないのに、シングルサインオンでアクセストークンを取得する方法を教えてください。
ここでは何が起こっているのか解明できますか?
私が混乱したのは、2つのドメインのfacebook.comとlocalhostのCookieがフロー中に設定されていたことです。ポップアップウィンドウがfb.comを設定していて、元の文書に埋め込まれているfb jsがlocalhostを設定しています。 リダイレクトについて、どのようにfbがlocalhostにリダイレクトできますか?私のコンピュータはルータの背後にあり、私はlocalhostサーバに対してポート転送を有効にしていない。ここで何か他のことが起こっていますか? –
はい、正しいと思います.JS SDKはlocalhost上のCookieを設定しています。facebook.comへのポップアップでは、独自のCookieが設定されています(常にそうとは限りません)。 Facebookがlocalhostにリダイレクトできる理由は、リダイレクトがソース(facebook.com)からターゲット(localhost)への_connection_を伴わず、代わりにブラウザがその接続を行うよう指示するためです。 [Charles](http://www.charlesproxy.com/)のようなものは、これをより明確にするために役立ちます。 – daaku
これはOauthの流れ(fbはそれがそうであると主張している)によって混乱しています。 3脚のフローでは、プロバイダーはサーバーへのコールバックを行い、サーバーサイドコードはurlからaccess_tokenを解析し、元のクライアントUI状態にリダイレクトします。シングルサインオンの流れでは、状況は多少異なります。サーバー側の操作はありません。 fb jsは、ユーザーがアプリケーションを認証する新しいウィンドウ(fb.comドメイン)を起動します。その後、このウィンドウが自動的に閉じ、コントロールがオリジナルウィンドウに戻り、魔法のようにアクセストークンがクッキーに表示されます。 orignalの親はどのようにクッキーを取得しましたか? –