2009-12-10 7 views
29

Je me demandais comment faire pour twitter OAuth via un popup, c'est-à-dire charger la page Oauth dans un popup et faire le rappel fermer la fenêtre enfant et recharger la fenêtre parent. Edit: OK les iframes sont mauvais, mais comment voulez-vous accomplir ce qui précède, je remarque que posterous.com fait cela - je cherche à atteindre le même flux que FB connect.Twitter OAuth via un popup

Répondre

61

Faire la même chose pour Yahoo aujourd'hui ...

  1. Ouvrir une fenêtre contextuelle
  2. Envoyer utilisateur twitter pour l'authentification
  3. Twitter envoie utilisateur à mysite.com/authcompleted .php, avec des paramètres d'authentification dans la chaîne de requête. Toujours dans la popup ici.
  4. La fenêtre contextuelle (mysite.com/authcompleted.html) lit la chaîne de requête et envoie les données à la fenêtre d'ouverture via javascript

    window.opener.setTwitterAuthData (yourData)

  5. intérieur setTwitterAuthData, qui est dans votre fenêtre principale, définissez les champs de formulaire appropriés et soumettez les données à votre serveur.

+0

comment pouvez-vous toujours être dans la popup, le point 3., lorsque le rappel est mysite.com/authcompleted. php? – Owen

+1

@mark Vous pointez le popup sur yahoo pour commencer, puis redirige yahoo, toujours dans le popup, à authcompleted.php – morgancodes

+0

merci, a du sens – Owen

5

Vous ne devriez pas faire cela. Le charger dans un IFrame cache l'URL à l'utilisateur, ce qui rend difficile pour lui de confirmer qu'il saisit son mot de passe sur twitter.com et non un site tiers (c'est-à-dire d'hameçonnage).

+2

Je suis d'accord en principe, mais ne pas la page auth ne sont || permettre refuser ces boutons d'application - il ne vous demande pas votre mot de passe. Donc, je ne vois pas pourquoi cela devrait être un problème du point de vue de la sécurité, tout en aidant le flux UX. – MatthewFord

+4

Si vous n'êtes pas connecté, il vous demande votre mot de passe. –

+3

Il ya iframe busting JS sur la page non connectée où il vous demande votre mot de passe (ligne 37) – MatthewFord