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

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

1、Illegal request

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

PHP代码
  1. $action = ‘login’;  
  2. $auth = passport_encrypt(passport_encode($autharray), $passport_key);  
  3. $forward = ‘http://www.discuz.net/index.php’;  
  4. $verify = md5($action.$auth.$forward.$passport_key);  
  5.   
  6. header(”Location: http://www.discuz.net/api/passport.php“.  
  7. “?action=$action”.  
  8. “&auth=”.rawurlencode($auth).  
  9. “&forward=”.rawurlencode($forward).  
  10. “&verify=$verify”);  

2、Lack of required parameters

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

3、Request expired

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

4、Invalid action

没有指定 Passport 所执行的 action。

发表评论