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

      

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