Я пытаюсь найти базовый логин OAuth Facebook с моего сайта.Сессия не задана, если она переместилась в ColdFusion/Railo
Перед тем, как перенаправить пользователя, я устанавливаю переменную сеанса, которую затем проверяю после того, как они были возвращены на мой сайт.
Я могу перейти на Facebook, войти и затем быть возвращенным, но как только я есть, переменная сеанса не существует.
Я абсолютно в тупике! Рассмотрим этот код:
lock scope="session" type="exclusive" timeout="30" {
session.source["state"] = createUUID();
}
// BUG?
// http://helpx.adobe.com/coldfusion/kb/missing-session-variables-using-cflocation.html
if (isDefined("session.source.state")) {
location(url="https://www.facebook.com/dialog/oauth?client_id=#application.fbappid#&redirect_uri=#application.fbredirecturl#&state=#session.source["state"]#&scope=email,publish_actions", addtoken="true");
}
Забавно ... session.source["state"]
передается в URL на Facebook ... но по возвращении, оказывается он пошел!
Это действительно странное поведение.
Перенаправление с помощью Javascript не является вариантом. Он должен быть серверным.
У кого есть ключ к этому вопросу? Я использую Railo.
Thanks, Mikey.
Во-первых, в реальной жизни сеанс может закончиться тайм-аутом, если пользователь находится на facebook достаточно долго. Во-вторых, cfdump свою область сеанса, чтобы увидеть, что на самом деле существует. –
@DanBracuk Перемещение происходит, поэтому сеанс определяется и сбрасывает его, прежде чем перенаправление показывает UUID, как ожидалось. Я не на Facebook более 10 секунд, а сеансы настроены на 30 минут. Кроме того, другие сеансовые сессии все еще работают в другом месте на веб-сайте. Сбрасывание сеанса по возврату показывает другие вары, но не тот, который был создан до перенаправления. –
Это происходит на безопасном (https) сервере? См. Https://issues.jboss.org/browse/RAILO-2773 –