我正在尝试实施opAuth login。 php 5.4.45。当我启动我的php页面时,我打电话给
if(!session_id()) session_start();
在此之后,如果我打印session_id()
,它将打印出来说“fsdfoasdiuhf736jf732938f92”(i)
现在我点击OpAuth登录facebook。一切都很好,我正确获取用户数据,但在回调页面上,会话ID不同。即,如果我打印session_id(),它将打印一个不同于(i)
的ID麻烦的是,现在如果我将用户名保存为$ _SESSION ['user']并重定向到主页,则会在主页上再次返回到原始会话ID(i)。并且没有在那里设置用户名。
涉及的每个页面,我在开始会话之前检查。难道我做错了什么?
更新
我想我对可能发生的事情有了一些线索。当我调用登录URL时,会有原始会话ID。我将回调网址传递给此函数。当Facebook授权登录并重定向到回调网址时,可能是php正在将此视为来自Facebook的请求?这意味着它是一个新的会话,所以它创建一个新的会话?与用户所在的不一样?然后当php重定向到原始页面时,原始会话又恢复了?这有意义吗?如果是这样,我怎样才能使会议保持不变?
答案 0 :(得分:0)
终于弄明白了这个问题。带登录按钮的实际页面是非www页面,登录按钮上有一个www url。因此,当回调网址形成时,它默认为www url。这与非www url不同,因此形成了新的会话。我将所有内容更改为非www url,并且按预期工作。