简单生活
返回文章列表
354 字2 分钟

Discuz!通行证(Discuz! Passport)错误提示详解

设计开发#Discuz

今天不知道为什么我的 Discuz! 和 PHPCMS 整合出现了一些问题,经过反复查验问题出在 Discuz! 上面,具体原因尚未查明,问题还未解决。找来下面的错误解释,留作备用,可能对跟我同样需要的朋友会有用。

1、Illegal request

非法请求,当验证字串 verify 不匹配时会产生此提示。可能是应用程序与 Discuz! 配置的私有密匙不同,或是通过 URL 传递前,未将必要的参数(如 auth、forward 等)进行 URL 编码,也有可能是使用了经过 URL 编码的参数值用来计算 verify 的 md5 值造成。以 PHP 语言为例,正确的代码应当是类似于如下的格式:

$action = 'login';
$auth = passport_encrypt(passport_encode($autharray), $passport_key);
$forward = 'http://www.discuz.net/index.php';
$verify = md5($action . $auth . $forward . $passport_key);
header("Location: http://www.discuz.net/api/passport.php" .
"?action=$action" .
"&auth=" . rawurlencode($auth) .
"&forward=" . rawurlencode($forward) .
"&verify=$verify");

2、Lack of required parameters

auth 内容解密后,缺少必要的信息 time、username、password、email。

3、Request expired

请求过期。当前服务器时间与应用程序提交过来的 time 之差大于 Discuz! Passport 中设置的请求有效期。可能是使用以往的代码非法尝试,也可能是由于应用程序和 Discuz! 论坛所在的两台服务器,时间设置有误造成。

4、Invalid action

没有指定 Passport 所执行的 action。