2014-03-12 4 views
1

Я создаю приложение rails, которое использует материал Turbolinks, который поставляется с Rails 4. Я также пытаюсь использовать кнопку входа в Google+ для аутентификации пользователя.Вход в Google+ с Turbolinks

У меня есть все, кроме одного случая: Если пользователь заходит на более чем одну страницу перед входом в систему, процесс регистрации google + не работает. В принципе, волшебство Turbolinks нарушает кнопку входа в Google+. (Если пользователь подписывается сразу, все работает отлично)

Это говорит, я вижу, где проблема. Когда google + js api загружается, он прикрепляет скрытый iframe к телу html-документа. Это сдувается, когда turbolinks загружает другую страницу. Уверен, что этот iframe требуется для завершения процесса входа в Google+.

Кто-нибудь пересек аналогичный мост? Я не уверен, как предотвратить отключение турбонауки iframe. Альтернативой может быть повторная инициализация Google+ Api, но ничего подобного не упоминается в документах Google Plus.

Спасибо за понимание!

ответ

2

У меня была та же проблема с Facebook login button и Bugherd sidebar.
Вам необходимо перезагрузить компоненты на каждой странице: выборка и страница: изменение событий.

Вот псевдо-код я использую для facebook логин:

$(document) 
    .on('page:fetch', saveFacebookRoot) 
    .on('page:change', restoreFacebookRoot) 

Я думаю, что вы можете сделать почти то же думаю, что с IFRAME Google+.

+0

Спасибо за подсказку, к сожалению, нет любви. Когда я перезагружаю специальный iFrame, это не помогает. Кроме того, google api выводит на консоль ошибку: «Неизвестный сервис RPC: oauth2relayReady: #####» –

+0

Он работает! - После того, как я выпью, я смог заставить это работать. Я все еще получаю странную ошибку в консоли. Кроме того, как только я вхожу в приложение, приложение добавляет еще один iframe к dom. Этот второй iframe не происходит в нормальных условиях ... Я очень ценю помощь, но я думаю, что я буду отказываться от turbolinks - решение просто слишком хрупкое. –

Смежные вопросы