Объединение HybridAuth с Javascript SDK?

(репост с https://groups.google.com/forum/?hl=ru&fromgroups=#!topic/hybridauth/CWo2R9suYts)

Начиная с Facebook, я пытаюсь использовать SDK Javascript поставщика для входа в систему, и HybridAuth «знает» об этом. Любая помощь будет оценена по достоинству.

Я начал с включения идентификаторов конфигурации в данные, которые я передаю в представление, чтобы я мог использовать их при вызове функций входа в систему Javascript. Поэтому в середине функции GetProviders класса Hybrid_Auth я добавил:

if(array_key_exists('keys', $params) && array_key_exists('id', $params['keys']))
$idps[$idpid]['id'] = $params['keys']['id'];

Мой Javascript включает в себя что-то вроде этого:

FB.init({
appId:'<?php echo $providers['Facebook']['id']; ?>',
cookie:true,
status : true,
xfbml:true
});

Все идет нормально.

Но после входа в систему (например, FB.login()), конечно, HybridAuth не знает и не имеет информации о пользователе.

Затем, чтобы «заставить» его, я попытался вызвать метод «.../hauth/login/Facebook» через Ajax:

$.ajax({
type: "POST",
url: ".../hauth/login/Facebook",
cache: false,
...

К сожалению, похоже, что ряд «перенаправлений» в HybridAuth делает это неработоспособным. Я даже добавил «данные: {ajax:true}» к вызову Ajax и попытался изменить HyrbidAuth, чтобы он не перенаправлял, если существует $_POST['ajax']. Это, похоже, тоже не помогло. (Я даже удалил «die ();» в конце функции redirect () безрезультатно.)

Я думаю, что либо на правильном пути, либо мне нужно добавить новый метод HybridAuth для обнаружения и сохранения данных для всех или конкретных уже существующих соединений.

Любые идеи?

Спасибо.


person ScottyB    schedule 18.04.2013    source источник


Ответы (1)


Я попробовал несколько способов войти в провайдер с помощью Javascript SDK и интегрировать его с HyrbidAuth. Ни одно из решений не было очень красивым, и каждое из них требовало изменения HybridAuth, что было бы трудно поддерживать. В конце концов я решил, что лучшим решением будет следовать примеру «виджета», включенному в HybridAuth.

Я не использовал виджет, но в коде показан способ открытия и закрытия отдельного окна меньшего размера с помощью Javascript. URL-адрес этого окна содержит информацию для вызова сервером метода аутентификации HybridAuth, который перенаправляет на страницу входа/утверждения поставщика.

Эффект, по сути, тот же: пользователь остается на той же странице, аутентифицируясь у провайдера в отдельном «окне».

person ScottyB    schedule 19.08.2013