Twitter или авторизация во всплывающем окне, а не в главном окне браузера - PullRequest
7 голосов
/ 03 мая 2010

Я чувствую себя невероятно глупо даже из-за того, что спрашиваю об этом, поскольку ответ может быть уже у меня под носом, но здесь он звучит так:

У TweetMeme есть твиттер-виджет Re-tweet, который издатели могут размещать в своих блогах. Когда пользователь нажимает на виджет, он открывает окно, которое позволяет пользователю аутентифицировать себя с помощью твиттера, а затем повторно твитнуть.

Кажется, здесь используется какой-то особый форм-фактор всплывающего окна oauth в Твиттере - если только под поверхностью не происходит чего-то более необычного для аутентификации пользователя.

Всплывающее окно выглядит так:

http://twitpic.com/1kepcr

Я бы предпочел обработать аутентификацию через всплывающее окно, а не отправлять пользователя на новую страницу (для приложения, над которым я работаю), и у них, похоже, есть самое изящное решение. Мысли о том, как они это сделали?

Ответы [ 3 ]

3 голосов
/ 03 мая 2010

Я думаю, что процесс выглядит примерно так (я предполагаю, что они использовали php на стороне сервера):

Сначала он открывает всплывающее окно, похожее на jQuery, но оно не связано строго с функциями входа в твиттер. Реальный процесс входа в систему начинается, когда вы подтверждаете это всплывающее окно, поэтому оно открывает новое всплывающее окно с некоторым количеством php внутри, чтобы # держать сеанс. Эти сценарии просят щебетать токены запроса, используя параметры приложения сайта, и сохранять их в массиве $ _SESSION. Если все в порядке, твиттер отправляет вас на страницу аутентификации твиттера (https://twitter.com/oauth/authenticate),) и после того, как вы вставили свои параметры входа, щебет отправит вас на страницу обратного вызова, созданную этим сайтом. Здесь есть еще одна страница php, которая запрашивает доступ токены и сохраните их в массиве $ _SESSION. Если сейчас все в порядке, у сайта есть параметры, необходимые ему для запроса вашего профиля, так что последние скрипты внутри всплывающего окна обновляют окно открытия (основной сайт) и закрывают себя. Теперь главное окно содержит все интересные параметры в массиве $ _SESSION.

Проверьте эту полезную библиотеку для всей работы на стороне сервера.

2 голосов
/ 26 мая 2011

Эта ссылка может быть вашим ответом, я пробовал, и она работает ..
http://zuzara.com/blog/2010/05/15/jquery-plugin-for-twitter-oauth-via-popup-window-facebook-style/

0 голосов
/ 03 мая 2010

Все, что они делают, это открывают страницу http://api.tweetmeme.com/share?url=someURL&source=tweetmeme в новом окне (с помощью target _blank), а затем начинают процесс оттуда.

РЕДАКТИРОВАТЬ: я смотрел на неправильную кнопку ретвита. Для вашего конкретного примера, нажав кнопку ретвита, сначала откроется страница Tweetmeme http://tweetmeme.com/ajax/partial?... в новом окне. Нажатие «да» затем инициирует процесс OAuth, отправляя вас (все еще в этом окне) на https://twitter.com/oauth/authenticate (с соответствующими параметрами).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...