Задать вопрос
grigor007
@grigor007
http://goldapp.ru

Как сделать авторизацию на сайте через Одноклассники с помощью js без перезагрузки страницы сайта?

Добрый день,

Хочу сделать авторизацию через Одноклассники на сайте, но перезагружать страницу сайта нельзя. У ВК для этого есть open api например.

На mamba.ru можно войти через одноклассники. Реализовано с помощью popup. Я попап открыл через window. open с адресом https://connect.ok.ru/oauth/authorize?client_id={c...

Как теперь сообщить основной страницы моего сайта с которого открыт popup, что token получен и можно обращаться к api одноклассников для получения user id?
  • Вопрос задан
  • 1480 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Vjaka
@Vjaka
Платформа игр (Одноклассники)
Вообще общий принцип такой авторизации:

1. Само приложение/сайт открывает попап авторизации ОК с передачей возвращаемого url на специальную страницу

2. Эта специальная страница при наличии window.opener - делает postMessage в это окно с передачей события что редирект удачно произошел
document.addEventListener('DOMContentLoaded', function () {
        if (window.opener) {
            window.opener.postMessage('okAuthSucceded', 'some-params');
        }
    });


3. Исходная страница получила сообщение и знает что авторизация произошла
document.addEventListener('DOMContentLoaded', function () {
        window.addEventListener('message', function (event) {
            if (event.data == 'okAuthSucceded') { //todo
            }
        }, false);
    }, false);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
grigor007
@grigor007 Автор вопроса
http://goldapp.ru
Сейчас передаю параметры из попапа так: window.opener.ok_params = document.location.href;

Но может есть и другие способы?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
Wanted. Москва
от 250 000 до 400 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
26 дек. 2024, в 14:40
15000 руб./за проект
26 дек. 2024, в 14:27
100000 руб./за проект