Opauth实现和会话id的问题


opauth implementation and and issue with session id

我正在尝试实现opAuth登录。php 5.4.45。启动php页面时,调用

if(!session_id()) session_start();

之后,如果我打印session_id(),它会打印出"fsdfoasdiuhf736jf732938f92"(I)

现在我点击facebook登录通过OpAuth。一切都很好,我正确地获得了用户数据,但是在回调页面上,会话Id不同。例如,如果我打印session_id(),它将打印一个不同于(I)的id

问题是,现在如果我将用户名保存为$_SESSION['user']并重定向到主页,在主页上,它又回到了原来的会话id (I)。这里没有设置username

每个涉及到的页面,我在开始一个会话之前检查。我做错了什么吗?

我想我对可能发生的事情有一点线索。当我调用登录url时,有原始会话id。我将回调url传递给这个函数。当facebook授权登录和重定向到回调url,可能是php看着这从facebook的请求?这意味着它是一个新会话,所以它创建了一个新会话?和用户所在的不一样吗?然后当php重定向到原始页面时,原始会话又恢复了吗?这有道理吗?如果是这样,我如何保持会话不变?

终于把问题弄明白了。带有登录按钮的实际页面是一个非www页面,登录按钮上有一个www url。所以当形成回调url时,它默认为www url。这与非www url不同,因此形成了一个新的会话。我改变了所有的非www网址,它是按预期工作。