0

我正在尝试从我的网站实现一些基本的 OAuth Facebook 登录。

就在我重定向用户之前,我设置了一个会话变量,然后在他们返回我的站点后进行检查。

我可以访问 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。

谢谢,米奇。

4

2 回答 2

1

facebook 将用户返回到的回调 url 是什么?我问的原因是,也许您正在将用户重定向到不同的应用程序。

最好的办法是将 application.applicationname 转储到设置会话的页面和用户返回的页面上。确保它们匹配,否则会话将不会继续。

于 2013-07-29T18:11:03.883 回答
0

有趣的是……session.source["state"]在 URL 中传递给 Facebook

这不应该发生在会话变量上。一定有什么问题。请跟踪您的代码,或发布更多代码。

于 2013-07-29T16:52:28.610 回答