我使用OAuth在外部网站进行身份验证。一切都很好,但会话变量在从外部网站重定向后丢失。
要点: 我在我的网站上存储会话var然后转到其他网站的登录页面。登录并确认后,它会重定向到我的回调,当我检查上一个会话var时,它会错过!如何解决?
我尝试在使用会话的任何地方调用session_start(),但它不起作用。当然我在“php.ini”中启用了会话并在浏览器中启用了cookie。 :)我调试但无法找到原因。
更新 存储我的会话var后,我做了这样的请求: http://mixi.jp/connect_authorize.pl?oauth_callback=http%3A%2F%2Fmypage.com%2Fcallback.php&oauth_token=fjdklsfjlksd
注意oauth_callback,它是重定向URL。我不知道mixi.jp用于重定向。
答案 0 :(得分:3)
确保您的网站在重定向之前和之后100%完全相同。
请注意
www.yoursite.com
和
yoursite.com
是两个不同的网站。
答案 1 :(得分:1)
会话ID存储在cookie中。 cookie会在您注册的域的每个页面中发送。当您跳转到另一个域时,您的cookie不会发送会话ID。您必须将会话ID传递给新域,然后在此域中使用会话ID创建新的cookie。
header('Location:redirect.php?session=' . session_id());
然后在重定向的页面中恢复会话
<?php
session_id($_GET['session']);
session_start();