2011-09-30 17 views
25

私はTwitterとFacebookでOAuth認証を行っています。現在、これらのサイトのそれぞれで、私のサーバは指定されたURL(例えば、Twitterでhttp://api.twitter.com/oauth/authorize)にユーザをリダイレクトし、コールバックURLで認証パラメータを受け取ります。現在のページからユーザーをリダイレクトする代わりに、新しいウィンドウを開いてOAuthリクエストを行うにはどうすればよいですか?

しかし、ユーザーは自分のページ(FacebookまたはTwitter)にリダイレクトされ、入力後正しいユーザー名&のパスワードが返されます。ユーザーが投稿をつぶすときにはhttp://techcrunch.comのようになります。

一部のサイトでは、ユーザーをリダイレクトするのではなく、ユーザーが資格情報を入力するためのポップアップウィンドウを開いていることがわかりました。認証が完了した後、ポップアップが閉じ、メインページが新しいコンテンツで更新されます。

これはjavascriptでは非常に簡単な作業ですが、それでもわかりません。私はポップアップウィンドウで認証URLを開くことができますが、結果を得る方法&メインページを更新しますか?あなたはポップアップwindow.open()を使用して認証URLを開いていると仮定すると、

答えて

43

、あなたが使用することによって、親ウィンドウにアクセスすることができます(ポップアップから)

window.opener 

とリロードに親ウィンドウを使用します。

window.opener.location.reload(); 

このコードは、oauth認証の成功コールバックURLとして設定したURLに配信する必要があります。一般的に

、流れは次のようになります。成功し、許可さえずりがあなた(によって与えられたURLにユーザーをリダイレクトした後、

  • (例えばtwitter.com上)の認可ページでポップアップを開きますそれは、オープナーウィンドウがwindow.opener.location.reload()を経由して(再読み込みます
  • 非常に同じポップアップ))
  • が希望されるJavaScriptを使用して(ポップアップ自体を閉じる)
にオープンします
+0

あなたはこれを行うには、ポップアップウィンドウにJavaScriptを置くことを意味ですか? –

+6

はい、ポップアップで、oauth認証の成功コールバックであるページに。だから、流れは次のとおりです:承認ページ(例えばtwitter.com上)でポップアップを開くと、承認された承認Twitterがユーザーから与えられたURLにリダイレクトされます(これは非常に同じポップアップで開かれます)。あなたが私の答えからjavascriptを置くコールバックページ、*オープナ*ウィンドウがリロードされ、単にjavascriptを使ってポップアップを閉じることもできます。 – WTK

+0

私はすぐにそれを試してみます –

関連する問題