C#实现 环信的用户注册和登录

ruan1978 2017-07-12 10:35:22
现在要实现将环信集成到自己的服务器端,要实现自己的用户名和密码注册到环信的服务器里去,这个注册过程如何实现?
还要实现一个用户登录,在环信的服务器实现登录的过程。同时要获取token。
参考的地址:
http://api-docs.easemob.com/#!/%E7%94%A8%E6%88%B7%E4%BD%93%E7%B3%BB%E9%9B%86%E6%88%90/delete_org_name_app_name_users
http://docs.easemob.com/im/100serverintegration/10intro

这个是用rest api调用的,如何转换成c#
之前也参考过一篇文章:
http://blog.csdn.net/wdw984/article/details/70976138

比如注册:
 #region 注册环信用户  
        /// <summary>  
        /// 注册新的环信用户  
        /// </summary>  
        /// <param name="ID">手机号</param>  
        /// <param name="GroupType">IOS还是安卓 0代表IOS 1代表安卓</param>  
        /// <returns></returns>  
        public static bool RegeditUser(string ID, int GroupType,out string GroupID)  
        {  
            GroupID = string.Empty;  
            string url = "http://a1.easemob.com/" + HXAppKey + "/" + HXAppKey1 + "/users";   
            string postData = "{ \"username\": \"" + ID + "\", \"password\": \"" + System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(ID, "MD5").ToLower() + "\"}";  
            string Token = GetHXToken();  
            HttpContent httpContent = new StringContent(postData);  
            httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");  
  
            HttpClient client = new HttpClient();  
            client.DefaultRequestHeaders.Add("Authorization", "Bearer " + Token);  
            HttpResponseMessage hrm = client.PostAsync(url, httpContent).Result;//reg  
            if (hrm.StatusCode == System.Net.HttpStatusCode.OK)  
            {  
                //加入分组  
                HxGroups Model = new HxGroups();  
                Model = GetModel(GroupType);//从本地数据库获取一个未满员的群组的信息  
                if (Model.HX_GroupType == null)  
                {  
                    //群组已满 创建新群组  
                    Model = CreatGroup("优惠券", 1, GroupType,Token);   
                }  
                url = "http://a1.easemob.com/" + HXAppKey + "/" + HXAppKey1 + "/chatgroups/" + Model.HX_GroupID + "/users/" + ID;  
                hrm = client.PostAsync(url, null).Result;//拉入群  
                if (hrm.StatusCode == System.Net.HttpStatusCode.OK)  
                {  
                    Model.HX_GroupUsers += 1;                      
                    Update(Model);//更新本地相关群组信息和环信服务器上的群组信息同步  
                    //用户环信所在组ID  
                    GroupID = Model.HX_GroupID;  
                    hrm.Dispose();  
                    client.Dispose();  
                    return true;  
                }  
                hrm.Dispose();  
                client.Dispose();  
                return false;  
            }  
            hrm.Dispose();  
            client.Dispose();  
            // string Token = client.PostAsync(url, httpContent).Result.Content.ReadAsStringAsync().Result;  
            return false;  
        }  
        #endregion  


#region 检测用户是否存在环信  
        public static bool CheckUser(string ID)  
        {  
            string url = "http://a1.easemob.com/" + HXAppKey + "/" + HXAppKey1 + "/users/" + ID;  
            var postData = "Bearer " + GetHXToken();  
  
            HttpClient client = new HttpClient();  
            client.DefaultRequestHeaders.Add("Authorization", postData);  
            HttpResponseMessage hrm = client.GetAsync(url).Result;  
            if (hrm.StatusCode == System.Net.HttpStatusCode.OK)  
            {  
                return true;  
            }  
            return false;  
        }  
        #endregion  

想问问从事过这方面开发的人提示一下。
...全文
439 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruan1978 2017-07-14
  • 打赏
  • 举报
回复
楼上的,关于登录过程,我给你发了私信
ruan1978 2017-07-13
  • 打赏
  • 举报
回复
请教一下楼上的,也就是说在环信服务器上注册了用户名和密码,就不需要登录这个过程了吗?
雷诺兹 2017-07-12
  • 打赏
  • 举报
回复

/// <summary>
        /// 注册 IM 用户
        /// </summary>
        /// <param name="url">https://a1.easemob.com/easemob-demo/chatdemoui/users</param>
        /// <param name="data">{"username":"jliu","password":"123456"}</param>
        /// <param name="token">开放注册or授权注册</param>
        /// <returns></returns>
        public static string Register(string url, string data, string token = null)
        {
            byte[] byteArray = Encoding.UTF8.GetBytes(data);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "post";
            request.ContentType = "application/json";
            if (!string.IsNullOrEmpty(token))
            {
                request.Headers.Add("Authorization", "Bearer " + token);
            }
            request.ContentLength = byteArray.Length;
            using (var stream = request.GetRequestStream())
            {
                stream.Write(byteArray, 0, byteArray.Length);
            }
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            using (var sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
            {
                return sr.ReadToEnd();
            }
        }
ruan1978 2017-07-12
  • 打赏
  • 举报
回复
to 楼上,能否给我简单写一个示例?
雷诺兹 2017-07-12
  • 打赏
  • 举报
回复
后台按环信文档写方式post就行了
雷诺兹 2017-07-12
  • 打赏
  • 举报
回复
官方Demo 1. 客户端登录集成 APP 客户端在登录自己的 APP 服务器后台成功后,需要调用环信客户端 SDK 的登录方法。 2. 客户端退出登录集成 APP 客户端在退出登录自己的 APP 服务器后台成功后,需要调用环信客户端 SDK 的退出登录方法。
ruan1978 2017-07-12
  • 打赏
  • 举报
回复
to 楼上,登录的你能帮我写一下吗?我再参考一下。
雷诺兹 2017-07-12
  • 打赏
  • 举报
回复
post的都可以用
ruan1978 2017-07-12
  • 打赏
  • 举报
回复
to 楼上,我获取token可以用前面那段代码吗? public static string GetHXToken()           {               string url = "http://a1.easemob.com/" + HXAppKey + "/" + HXAppKey1 + "/token";               var postData = "{ \"grant_type\": \"client_credentials\", \"client_id\": \"" + HXClientID + "\", \"client_secret\": \"" + HXClientSecret + "\"}";               HttpContent httpContent = new StringContent(postData);               httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");                  HttpClient client = new HttpClient();               HttpResponseMessage hrm = client.PostAsync(url, httpContent).Result;               if (hrm.StatusCode == System.Net.HttpStatusCode.OK)               {                   JObject JO = (JObject)JsonConvert.DeserializeObject(hrm.Content.ReadAsStringAsync().Result);                   return JO["access_token"].ToString();               }               hrm.Dispose();               client.Dispose();               // string Token = client.PostAsync(url, httpContent).Result.Content.ReadAsStringAsync().Result;               return "";           }           #endregion  

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧