Авторизация на сайте через одноклассники и твиттер без перезагрузки страницы (javascript)?
Здравствуйте!
Такой вопрос, в Facebook и Вконтакте, есть очень простой способ авторизации пользователя через Javascript SDK без перезагрузки страницы. Мне же нужно реализовать авторизацию еще через Одноклассники и Твиттер без перезагрузки страницы. Но в их api черт ногу сломит. Видел на многих сайтах, что такая возможность есть. Например на кинопоиске спокойно подключается выгрузка оценок в твиттер (по сути авторизация), без перезагрузки страницы.
Подскажите куда копать? Скорее всего, как таковой, четкой авторизации через javascript у этих API нет, но может быть есть какие-нибудь костыли или я чего-то не углядел?
Одноклассники, имхо, в печь. А вот в API твиттера стоит разобраться таки.
Так же можно например посмотреть в сторону агрегаторов: https://ulogin.ru/, https://loginza.ru/
Зачем вам именно Javascript? Обычный Oauth подойдет.
1. Открываете окно с запросом прав /разрешений
2. Пользователь жмет "ок" в этом окне
3. В том же окне идет редирект на ваш redirect_url, где вы делаете все что надо на сервере
4. Далее в том же окне вызывает какую-то JS функцию в родительском окне ( self.opener.myDummyFunction() ) и закрываете окно self.close()
А вообще, твиттер и одноклассники ничем не сложнее остальных.
Затем, что мне нужно тут же отобразить некоторую информацию о пользователе (имя и фото) без перезагрузки страницы. Разве обычным Oauth я смогу такое реализовать? Зачем тогда JavaScript API?
Дмитрий: Как я написал выше, пока не очень понимаю, как без перезагрузки вернуть некоторые данные пользователя после авторизации. Буду читать api, что еще остается.
lsa413: Дмитрий все верно отписал.
Используйте OAUTH - и на ok и на других сайтах это должно работать.
1. Открываете новое окно с авторизацией на сайте. Туда человек логинится. Передаете туда параметр с адресом спец страницы возврата куда в этом окне пойдет редирект после окончания логина.
2. В этой спец странице делаете через javascript postmessage (посылаете сообщение своей основной странице что человек залогинился и сессия такая-то, ключ такой-то) и закрываете страницу.
3. Основной сайт получив сообщение шлет REST запрос на сервис (в случае OK это users.getCurrentUser передав туда сессию и подписав ключем сессии запрос). В ответ получаете нужные данные и показываете на экране.
Без открытия нового окна по причинам безопасности по-моему уже ни один сайт не авторизует.
lsa413: есть пример на github : https://github.com/apiok/js_sample_widgets
там скрипт viral.html - это основной скрипт с запросом на авторизацию, передает возврат через viral-cb.html, которые и отсылает сообщение основному скрипту. В данном примере без параметров