$_SESSION变量在OAuth回调期间丢失

时间:2018-01-19 作者:Xtremefaith

当我尝试OAuth握手时,第一步是GET 调用以获取这样的访问代码。

# Redirect to request authorization code
$url = $this->get_authorization_url();
header("Location: $url");
exit;
在发送之前,我将当前URL存储在$_SESSION[\'last_url\'] 变量,以便在身份验证完成后,我可以将其重定向回用户最初尝试的页面。

此授权url使用客户端id和密码获取访问代码,然后返回到回调脚本。问题是当我登陆回拨页面时$_SESSION 完全为空。我需要确保我能在握手结束时得到这个原始URL,在花了一整天的时间之后,我急切地想得到一些答案。

NOTE: 还应该注意的是,该网站托管在WordPress引擎上,该引擎具有强大的缓存机制,这可能是导致此问题的原因,但即使是这样,我也需要一个解决方案。

1 个回复
SO网友:user3338098

我的wordpress版本没有会话。所以当我打电话的时候$_SESSION[\'callback_state\']=stuff 它很乐意将其保存到临时堆栈局部变量中,而不是保存到实际会话中。

因此,在重定向之前,请执行以下操作:

if (!session_id()) {session_start();}
//then the normal redirect
header("location: $newUrl");
exit(0);

结束

相关推荐

当我使用wp_reDirect()函数时,也可能会重定向

我想我的插件重定向到一个页面时,一些条件不符合插件激活后。我一直在To many redirects... 错误消息。我的代码如下所示:if (! defined(\'WPINC\')) die; if (! class_exists(\'AwesomePlugin\')) { class AwesomePlugin { public function __construct(){ //Register admin