我正在尝试从我的网站实现一些基本的 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。
谢谢,米奇。