今天给一个站长处理jsp调用UCenter的同步登录接口,一直不返回Discuz!的值,只有其它的应用的,经过排查,该站长用的是Discuz!7.2版本,UCenter版本为1.5,control/user.php脚本里,
function onsynlogin() { $this->init_input(); $uid = $this->input('uid'); if($this->app['synlogin']) { if($this->user = $_ENV['user']->get_user_by_uid($uid)) { $synstr = ''; foreach($this->cache['apps'] as $appid => $app) { if($app['synlogin'] && $app['appid'] != $this->app['appid']) { $synstr .= '<script type="text/javascript" src="'.$app['url'].'/api/'.$app['apifilename'].'?time='.$this->time.'&code='.urlencode($this->authcode('action=synlogin&username='.$this->user['username'].'&uid='.$this->user['uid'].'&password='.$this->user['password']."&time=".$this->time, 'ENCODE', $app['authkey'])).'" reload="1"></script>'; } } return $synstr; } } return ''; }
if($app[‘synlogin’] && $app[‘appid’] != $this->app[‘appid’])做了判断,即调用的appid相同的的话,不会有返回值,UCenter1.6.0版本已经去掉了&& $app[‘appid’] != $this->app[‘appid’]这个条件,去掉后,就能得到对应应用的返回值了。