views:

726

answers:

3

I was wondering how to do twitter OAuth via a popup, i.e. load up the Oauth page in a popup and make the callback close the child window and reload the parent window.

Edit: OK iframes are bad, but how would you accomplish the above, I notice posterous.com does this - I'm looking to achieve the same flow as FB connect.

+1  A: 

You shouldn't do this. Loading it in an IFrame hides the URL from the user, making it difficult for them to confirm that they're entering their password on twitter.com and not a third-party (i.e. phishing) site.

Jordan
I agree in principle, but doesn't the auth page only have allow || deny this application buttons - it doesn't ask you for your password. So I can't see why it should be a problem from a security perspective, while helping the UX flow.
MatthewFord
If you're not logged in it asks you for your password.
Jordan
There is iframe busting JS on the non-logged in page where it asks you for your password (line 37)
MatthewFord
+2  A: 

This maybe helpful!

http://zuzara.com/blog/2010/05/15/jquery-plugin-for-twitter-oauth-via-popup-window-facebook-style/

NikM
If you're developing on Windows you can find the pecl oauth dll at http://downloads.php.net/pierre/
Mark Flint
+1  A: 

Doing the same thing for Yahoo today...

  1. Open a popup
  2. Send user to twitter for authentication
  3. Twitter sends user back to mysite.com/authcompleted.php, with authentication parameters in the query string. Still in the popup here.
  4. The popup (mysite.com/authcompleted.html) reads the query string and sends the data to the opener window via javascript

    window.opener.setTwitterAuthData(yourData)

  5. Inside setTwitterAuthData, which is in your main window, set appropriate form fields and submit the data to your server.

morgancodes
how can you still be in the popup, point 3., when the callback is mysite.com/authcompleted.php?
Mark Flint
@mark You point the popup to yahoo to begin with, then yahoo redirects, still inside the popup, to authcompleted.php
morgancodes
thanks, makes sense
Mark Flint