去评论
PHP源码市场

Discuz! 3.5 的 UCenter 接口返回 Access denied for operation changed

Discuz!小编
2025/05/12 16:50:53
3.4 的接口可以正常返回,3.5 同样的代码就出现了 Access denied for operation changed。


另外有没有比较清晰的 UCenter 的接口文档,我是 Java 开发者,用的是别人比较老的调用接口的代码,很不好调试。

感谢知道的朋友们的回复!
1 贡献+1 金币最佳答案

        如果你手头已经有能用的老代码那就好办了,否则光是接口参数的加密就够你头疼一阵子的。
这接口大概是这么个编码流程:
1. 先对参数做url编码,大致就是变成a=b&c=d这种格式
2. (出于安全考虑新增的,x3.4可能没有)参数后面追加&m=module&a=action&appid=UC_APPID,比方说登录环节,module就是user action就是login
3. 后面再追加&agent=UA的MD5,&time=时间戳
4. 用Discuz自家的authcode加密算法(通常是一个函数实现,如果你原本有代码这里应该有这个东西)对上述字符串加密,密钥为UC_KEY,加密完了用urlencode编码
5. 将加密以后的东西嵌入这串参数里面 m=module&a=action&inajax=2&release=UC_CLIENT_RELEASE&input=上一步的内容&appid=UC_APPID
6. 上述参数即为最终POST到接口的东西,记得Content-Type: application/x-www-form-urlencoded。因为已经encode过了所以直接发就行了。

你对照着这套逻辑看看你已有的原版代码,看懂以后把缺少的部分补上应该就能用了。