Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

Discuz X3微社区 无力吐槽 微社区文件执行顺序

[复制链接]
barbo123 发表于 2014-9-12 18:08:51 | 显示全部楼层 |阅读模式
本帖最后由 barbo123 于 2014-9-12 18:17 编辑

研究了一天,已经无力吐槽,但不得不说,DZ。。。呵呵。

ok 后台安装 微信登陆
微信中   到 微社区  到帖子 发新帖+回复,均出现
  很明显是  用户名出了问题。

找了一天,说说执行的流程

1.访问微社区 接口  a.com/api/mobile/index.php 里面代码分析
  引入 source/plugin/mobile/mobile.php 各个操作动作
  $apifile = 'source/plugin/mobile/api/'.$_GET['version'].'/'.$_GET['module'].'.php';

if(file_exists($apifile)) {
        require_once $apifile;
}
  这一句引用对应的version下的  module 。php
X3的在 source/plugin/mobile/api/4/  下

ok  那先看 查看帖子 哪个文件
viewthread.php   有意思的事情来了。
查看的页面竟然不在本地的服务器上而是
http://wsq.discuz.qq.com//?c=index&a=viewthread&f=wx&tid=6319&siteid=263090842&login=yes&pos=yes&viewpid=&state=siteregister&username=5qCR5LiL5LmY5YeJCW9zZWpBdUx4MmF4NUVGYWZ4STlIcFl3b29TUGM=&avatar=http://wx.qlogo.cn/mmopen/1MLz0YkS76FAh5OmCQVOcdZTPwc6CQXC2iaKmh08C3PkS1sDrhvSAZwEqOTs26Ft4PicXf7MQAo9naicAyHrY3Svw/0

ok我不知道为什么会是在 wsq.discuz.qq.com 上面显示的帖子列表。
http://wsq.discuz.qq.com/?siteid=263090842&c=index&a=index&mobile=2   微社区的首页
http://wsq.discuz.qq.com/?c=index&a=viewthread&f=wx&tid=6341&siteid=263090842&_bpage=1  帖子页面
好吧,那既然我点击 回复的时候 提示这个
那这时候说明,回复的那个按钮是在 wsq.discuz.qq.com上的,那既然能帖子和微信用户同步到PC端论坛,说明wsq.discuz.qq.com推送了 回复的数据,在点击回复的时候,post or get 了username 到 mobile上面了。
在微信上面 错误页面复制链接
http://bbs.wzect.com/plugin.php?mod=wxlogin&id=wechat&ac=bind&mobile=2&referer=http://wsq.discuz.qq.com//?c=index&a=viewthread&f=wx&tid=6319&siteid=263090842&login=yes&pos=yes&viewpid=&state=siteregister&username=5qCR5LiL5LmY5YeJCW9zZWpBdUx4MmF4NUVGYWZ4STlIcFl3b29TUGM=&avatar=http://wx.qlogo.cn/mmopen/1MLz0YkS76FAh5OmCQVOcdZTPwc6CQXC2iaKmh08C3PkS1sDrhvSAZwEqOTs26Ft4PicXf7MQAo9naicAyHrY3Svw/0

看到了么 操作 plugin.php?mod=wxlogin&id=wechat&ac=bind   ok既然到了 wechat 那到 plugin/wechat
首先引用的是
plugin/wechat/wechat.inc.php
list($openid, $sid) = explode("\t", authcode(base64_decode($_GET['key']), 'DECODE', $_G['config']['security']['authkey']));  
不知道 $_GET['key']怎么传递的求分析
  
 楼主| barbo123 发表于 2014-9-12 18:12:50 | 显示全部楼层
本帖最后由 barbo123 于 2014-9-12 18:16 编辑

还是根据错误推算,肯定是在注册时候出现错误。往下找
$uid = WeChat::register(WeChat::getnewname($openid), 1);  找到这句
WeChat::getnewname在文件  
wechat.class.php
getnewname文件中 通过openid 来获取微信上的昵称
if($userinfo) {
                        $defaultusername = substr(WeChatEmoji::clear($userinfo['nickname']), 0, 15);
                        loaducenter();
                        $user = uc_get_user($defaultusername);
                        if(!empty($user)) {
                                $defaultusername = cutstr($defaultusername, 9, '').'_'.random(5);
                        }
                } else {
                        $defaultusername = 'wx_'.random(5);
                }
                return $defaultusername;
这段代码 如果能获取则 截取nickname。。。ok问题出现了,尼玛userinfo file_put_contents中是



WeChat::getnewname($openid) 在 wechat.lib.class.php中
public function getUserInfoById($uid, $lang = '') {
                if (!$lang) {
                        $lang = self:_USERINFO_LANG;
                }
                $access_token = $this->getAccessToken();
                $url = self:_URL_API_ROOT . "/cgi-bin/user/info?access_token=$access_token&openid=$uid&lang=$lang";

                $res = json_decode(self::get($url), true);

                return self::checkIsSuc($res) ? $res : null;
        }


很明显是  微信调用接口返回的用户名有问题,同时有些ok,有些不ok。。微信调取用户数据有问题。希望官方尽快解决

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

taobaokee 发表于 2014-9-13 12:36:20 | 显示全部楼层
楼主挺懂的,微社区尤其是打通版的的确很多bug。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-1-10 17:35 , Processed in 0.021472 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表