Java IM环信服务端集成之用户注册(三)

移动端用户注册 VS 环信IM用户注册

一、IM 用户管理

注册 IM 用户[单个]

URL 指定的 org 和 APP 中创建一个新的用户,分两种模式:开放注册和授权注册。
  • “开放注册”模式:注册环信账号时,不用携带管理员身份认证信息;
  • “授权注册”模式:注册环信账号时,必须携带管理员身份认证信息。推荐使用“授权注册”,这样可以防止某些已经获取了注册 URL 和知晓注册流程的人恶意向服务器大量注册垃圾用户。
注意:以下 API 中提到的 ${token} 是个变量,使用时需要替换成通过 APP 的 client_id 和 client_secret 获取到的 token。


1.1 开放注册部分




package com.xunxin.service.app;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.xunxin.dao.app.AppUserDao;
import com.xunxin.dao.sys.MessageDao;
import com.xunxin.dao.sys.PlatformMutualityManagentDao;
import com.xunxin.util.HttpUtils;
import com.xunxin.util.HttpUtils.UHeader;
import com.xunxin.util.app.IDGeneratorUtil;
import com.xunxin.util.app.ValidationUtil;
import com.xunxin.vo.app.exception.LoginExceptionConstant;
import com.xunxin.vo.app.exception.RegisterExceptionConstant;
import com.xunxin.vo.sys.PlatformMutualityManagent;
import com.xunxin.vo.user.UserEntity;
import com.xunxin.web.api.exception.LoginException;
import com.xunxin.web.api.exception.RegisterException;

/**
 * Copyright © 2017 noseparte(Libra) © Like the wind, like rain
 * @Author Noseparte
 * @Compile 2017年10月11日 -- 下午4:57:41
 * @Version 1.0
 * @Description	app端的用户监管
 */
@Service("appUserService")
public class AppUserService {

	private static final String LINKED_URL = "https://a1.easemob.com/";
	
	@Autowired
	private AppUserDao appUserDao;
	@Autowired
	private MessageDao messageDao;
	
	@Autowired
	private PlatformMutualityManagentDao platformMutualityManagentDao;
	
	public boolean register(int platform_id, String phone, int verifyCode, String user_password) {
		
		//----------------------------
			//获取环信应用信息
			PlatformMutualityManagent pm = platformMutualityManagentDao.findOne(platform_id);
			String app_key = pm.getApp_key();
			String username = "xunxin" + "|" + phone;	//环信 ID
			String password = "xunxin" + "|" + user_password;	//用户密码
			String org_name = app_key.split("#")[0];	//组织名称
			String app_name = app_key.split("#")[1];	//APP名称
			
		//----------------------------
			//注册IM[单个]
			//post请求路径
			String register_url = LINKED_URL + org_name + "/" + app_name + "/" + "users";	
			StringBuffer register_sb = new StringBuffer();
			register_sb.append("username=").append(username);
			register_sb.append("&password=").append(password);
			String register_argJson = register_sb.toString();
			//请求头信息
			List register_headerList = new ArrayList();
			register_headerList.add(new UHeader("Content-Type", "application/json"));
			String register_resp = HttpUtils.getPostResponse(register_url, register_argJson, register_headerList);
			//解析环信注册返回的JSON
			JSONObject register_obj = JSON.parseObject(register_resp);
			String applicationName = register_obj.getString("applicationName");
			if(applicationName.equals("followheart")) {
				System.out.println("环信注册成功");
			}
			
			//手机号输入有误
			if(!ValidationUtil.matchMobile(phone)) {
				throw new RegisterException(RegisterExceptionConstant.PHONE_NUMBER_IS_WRONG);
			}
			int isExist = appUserDao.findByPhone(phone);
			//用户已存在
			if(isExist == 0) {
				throw new RegisterException(RegisterExceptionConstant.LOGIN_NAME_IS_EXIST);
			}
			//手机号输入有误
			if(!ValidationUtil.matchPassWord(password)) {
				throw new RegisterException(RegisterExceptionConstant.PASSWORD_ERROR);
			}	
			//验证码
			int code = messageDao.findLastOneByPhone(phone);
			if(verifyCode != code) {
				throw new RegisterException(RegisterExceptionConstant.VERIFY_CODE_ERROR);
			}
			//密码输入有误
			if(!ValidationUtil.matchPassWord(password)) {
				throw new RegisterException(RegisterExceptionConstant.PASSWORD_ERROR);
			}
			//一切正常,开始进入注册流程
			UserEntity entity = new UserEntity(phone, IDGeneratorUtil.createAppCode(), 0, password, new Date());
			appUserDao.save(entity); //TODO
			//大功告成
			return true;
	}



1.2 授权注册部分



  Github地址:https://github.com/noseparte 

       Email:[email protected]     有java与hadoop相关的技术问题,可以发私信与我交流。

       NPM地址:https://www.npmjs.com/~noseparte

       个人网站 : http://www.noseparte.com/   Copyright © 2017 noseparte

      

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章