java UCnter 单点登录 对接。
发布日期:2022-03-29 14:05:02 浏览次数:22 分类:博客文章

本文共 6337 字,大约阅读时间需要 21 分钟。

 

 前提 PHP项目要部署成功。论坛能正常访问。

先配置 应用

 

1.是论坛应用

4.是java服务器,也就是你java登录的项目。 必须通信成功。

。主应用IP就是你java项目的入口。 例如:http://192.168.1.100:8080 注意不要写成 http://192.168.1.100:8080/ 后面不要加斜杠。

 

进 bbs/admin.php 

设置好,激活方式。

论坛的配置完了。再配置java项目。

java 项目 resourse 也就是类路径下面。会有一个config.properties 文件 。后面。有说明为什么要有这个。

这个配置自己论坛里面的信息。

这个必须放在java项目里面。 

web.xml 加入

 

https://code.google.com/p/discuz-ucenter-api-for-java/  项目中的文件。api.ucenter config.perproties  别人整的开源项目。拷贝就行。

 

配置工作准备完毕

实现java登录 同步到bbs论坛。

java代码:

在java登录通过之后。

登录:

UcSynLogin ucSynLogin = new UcSynLogin();

ucSynLogin.getUcSynLogin(map,password,User);

注册:

UcSynReg reg = new UcSynReg();  

reg.ucSynReg(map,password,user);

代码:

/** * @author zhourong * @date 2018/9/27 */public class UcSynReg extends BaseUcSynLogin {    private Logger log = LoggerFactory.getLogger(UcSynReg.class);    private UcSynLoginService ucSynLoginService = new UcSynLoingServiceImpl();    public void ucSynReg(Map map, String password, User loginUser){        String userName = loginUser.getUserName();        String email = loginUser.getEmail();        String loginUrl = null ;        log.info("用户信息:"+loginUser);        log.info("前端返回信息:"+map);        log.info("密码:"+password);        if (loginUser == null ){            log.info("用户为空");            ucSynLoginService.setMap(map,loginUrl,loginUser);            return ;        }        if(StringUtils.isBlank(email)){            log.info("邮箱为空");            ucSynLoginService.setMap(map,loginUrl,loginUser);            return ;        }        String userId = ucSynLoginService.getSynUserReg(userName,password,email,client);        if(StringUtils.isEmpty(userId) || Integer.parseInt(userId) < 1){            ucSynLoginService.setMap(map,loginUrl,loginUser);            return ;        }        loginUrl = ucSynLoginService.getSynLoginUrl(userId,client);        log.info("同步登录返回链接:"+loginUrl);        ucSynLoginService.setMap(map,loginUrl,loginUser);    }
UcSynReg(注册并登录同步)
/** * @author zhourong * @date 2018/9/27 */public class UcSynLogin extends BaseUcSynLogin {    private Logger log = LoggerFactory.getLogger(UcSynLogin.class);    private static  final String ZERO = "0";    private UcSynLoginService ucSynLoginService = new UcSynLoingServiceImpl();    /**     *  登录     */    public void getUcSynLogin( Map map, String password,User loginUser){        String loginUrl = null;        String userName = loginUser.getUserName();        String userId = null;        log.info("入参--->USER:"+loginUser.toString()+"Map:"+map);        Long start = System.currentTimeMillis();        if (loginUser == null ){            log.info("用户为空");            ucSynLoginService.setMap(map,loginUrl,loginUser);            return ;        }        String email = loginUser.getEmail();        if(StringUtils.isBlank(email)){            log.info("邮箱为空");            ucSynLoginService.setMap(map,loginUrl,loginUser);            return ;        }        String synUser = ucSynLoginService.getSynUser(userName,client);        if(StringUtils.isEmpty(synUser) || ZERO.equals(synUser)){            userId = ucSynLoginService.getSynUserReg(userName,password,email,client);            if(StringUtils.isEmpty(userId) || Integer.parseInt(userId) < 1){                ucSynLoginService.setMap(map,loginUrl,loginUser);                return ;            }            loginUrl = ucSynLoginService.getSynLoginUrl(userId,client);            log.info("同步登录返回链接:"+loginUrl);        } else {            LinkedList
result = new LinkedList
(); result = XMLHelper.uc_unserialize(synUser); if(CollectionUtils.isEmpty(result)){ ucSynLoginService.setMap(map,loginUrl,loginUser); return ; } userId = result.get(0); log.info("用户ID:"+result.get(0)); log.info("用户名:"+result.get(1)); log.info("用户邮箱:"+result.get(2)); loginUrl = ucSynLoginService.getSynLoginUrl(userId,client); log.info("同步登录返回链接:"+loginUrl); } ucSynLoginService.setMap(map,loginUrl,loginUser); Long end = System.currentTimeMillis(); Long time = end - start ; log.info("同步登录访问时间:"+time); log.info("同步返回结果:"+map); return ; }}
UcSynLogin(同步登录)
/** * @author zhourong * @date 2018/9/27 */public class UcSynLoingServiceImpl implements UcSynLoginService {    private Logger log = LoggerFactory.getLogger(UcSynLoingServiceImpl.class);    @Override    public String getSynLoginUrl(String userId,Client client ){        try{            String loginUrl  = client.uc_user_synlogin(Integer.parseInt(userId));            log.info("同步登录链接:"+loginUrl);            return loginUrl;        } catch (Exception e) {            log.error("获取同步登录信息错误:"+e.getMessage());        }        return null;    }    @Override    public String getSynUser(String userName,Client client){        try{            String userXml = client.uc_get_user(userName,0);            log.info("获取同步用户信息:"+userXml);            return userXml;        } catch (Exception e) {            log.error("获取同步用户信息失败:"+e.getMessage());        }        return null ;    }    @Override    public String getSynUserReg(String userName,String password,String email,Client client){        try{            String userId = client.uc_user_register(userName,password,email);            log.info("获取用户ID:"+userId);            return userId;        } catch (Exception e){            log.error("获取同步注册信息失败:"+e.getMessage());        }        return null;    }    @Override    public void setMap(Map map ,String loginUrl,User user){        log.info("同步链接:"+loginUrl);        log.info("email:"+user.getEmail());        map.put("loginUrl",loginUrl);        map.put("email",user.getEmail());        return ;    }}
登录,注册,获取用户信息

 

同步之后。会返回一段js代码。

<script type="text/javascript" src="" reload="1"></script>

执行一下js代码 。然后访问一下bbs就行了。 /uc_client/client.php HTTPS: 访问 要采用数据库方式 。同时论坛退出会报301 解决方式: https://www.itsvse.com/forum.php?mod=viewthread&tid=4798  原:$ port =!empty($ matches ['port'])?$ matches ['port']:80;  改:$ port =!empty($ matches ['port'])?$ matches ['port'] :( $ matches ['scheme'] =='https'?443:80);  原:if(!$ fp = @fsocketopen(($ ip?$ ip:$ host),$ port,$ errno,$ errstr,$ timeout)){  改:if(!$ fp = @fsocketopen(($ scheme =='https'?'ssl':$ scheme)。'://'。($ scheme =='https'?$ host:($ ip?$ ip :$ host)),$ port,$ errno,$ errstr,$ timeout)){

转载地址:https://www.cnblogs.com/1-Admin/p/9715420.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:e.getMessage 为空NULL
下一篇:sql server 查询练习

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月12日 07时49分42秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章