网易云信IM C#.Net请求、操作网易云通信ID

没啥技术含量就不写其他的了  直接上代码

using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

namespace WXL_IM.Util
{
    public class IMUtil
    {
        #region 服务器操作URL
        // 创建【网易云通信ID】的Url
        //  参数	    类型    必须	    说明
        //  accid	String	是	    网易云通信ID,最大长度32字符,必须保证一个APP内唯一(只允许字母、数字、半角下划线_、@、半角点以及半角-组成,不区分大小写,会统一小写处理,请注意以此接口返回结果中的accid为准)。
        //  name	String	否	    网易云通信ID昵称,最大长度64字符,用来PUSH推送时显示的昵称
        //  props	String	否	    json属性,第三方可选填,最大长度1024字符
        //  icon	String	否	    网易云通信ID头像URL,第三方可选填,最大长度1024
        //  token	String	否	    网易云通信ID可以指定登录token值,最大长度128字符,并更新,如果未指定,会自动生成token,并在创建成功后返回
        //  sign	String	否	    用户签名,最大长度256字符
        //  email	String	否	    用户email,最大长度64字符
        //  birth	String	否	    用户生日,最大长度16字符
        //  mobile	String	否	    用户mobile,最大长度32字符,只支持国内号码
        //  gender	int	    否	    用户性别,0表示未知,1表示男,2女表示女,其它会报参数错误
        //  ex	    String	否	    用户名片扩展字段,最大长度1024字符,用户可自行扩展,建议封装成JSON字符串
        static string CRT_USER_URL = "https://api.netease.im/nimserver/user/create.action";

        // 更新【网易云通信ID】的Url 非修改用户信息用
        // 参数	    类型	   必须	   说明
        // accid	String	是	   网易云通信ID,最大长度32字符,必须保证一个APP内唯一
        // props	String	否	   json属性,第三方可选填,最大长度1024字符
        // token	String	否	   网易云通信ID可以指定登录token值,最大长度128字符
        static string UPD_USERID_URL = "https://api.netease.im/nimserver/user/update.action";

        // 更新并获取新token
        // 参数	    类型	   必须	   说明
        // accid	String	是	   网易云通信ID,最大长度32字符,必须保证一个APP内唯一
        static string UPDGET_USERTOKEN_URL = "https://api.netease.im/nimserver/user/refreshToken.action";

        // 封禁网易云通信ID
        // 参数	    类型	   必须	   说明
        // accid	String	是	   网易云通信ID,最大长度32字符,必须保证一个APP内唯一
        // needkick	String	否	   是否踢掉被禁用户,true或false,默认false
        static string BLOCK_USERID_URL = "https://api.netease.im/nimserver/user/block.action";

        // 解禁网易云通信ID
        // 参数	    类型	   必须	   说明
        // accid	String	是	   网易云通信ID,最大长度32字符,必须保证一个APP内唯一
        static string UNBLOCK_USERID_URL = "https://api.netease.im/nimserver/user/unblock.action";

        #endregion 服务器操作URL

        //云信AppKey 公匙
        static string appKey = ConfigurationManager.AppSettings["IMAppKey"];
        //云信AppSecret 私钥
        static string appSecret = ConfigurationManager.AppSettings["IMAppSecret"];

        /// <summary>
        /// 执行请求
        /// </summary>
        /// <param name="action">操作码 1创建用户 2更新用户ID 3更新获取用户token 4禁用用户 5解禁用户</param>
        /// <param name="reqParams">参数 key=value</param>
        /// <returns></returns>
        public static string executeRequest(int action,string reqParams)
        {
            string url = string.Empty;
            switch (action)
            {
                case 1://创建用户
                    url = CRT_USER_URL;
                    break;
                case 2://更新用户ID
                    url = UPD_USERID_URL;
                    break;
                case 3://更新并获取新的Token
                    url = UPDGET_USERTOKEN_URL;
                    break;
                case 4://封禁网易云通信ID
                    url = BLOCK_USERID_URL;
                    break;
                case 5://解禁被封禁的网易云通信ID
                    url = UNBLOCK_USERID_URL;
                    break;
                default:
                    return "{\"desc\":\"方法选择错误!\",\"code\":-1}";
            }
            WebRequest wReq = WebRequest.Create(url);
            //------设定云信的相关校验值------
            wReq.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
            wReq.Method = "POST";
            wReq.Headers.Add("AppKey", appKey);
            //随机数(最大长度128个字符)
            string nonce = new Random().Next(100000, 999999).ToString();
            wReq.Headers.Add("Nonce", nonce);
            //当前UTC时间戳,从1970年1月1日0点0 分0 秒开始到现在的秒数(String)
            string curTime = ((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000).ToString();
            wReq.Headers.Add("CurTime", curTime);
            //SHA1(AppSecret + Nonce + CurTime),三个参数拼接的字符串,进行SHA1哈希计算,转化成16进制字符(String,小写)
            wReq.Headers.Add("CheckSum", SHA1_Hash(appSecret + nonce + curTime));
            //------设定云信的相关校验设定------

            //-----传递相关操作参数-----
            byte[] btBodys = Encoding.UTF8.GetBytes(reqParams);
            wReq.ContentLength = btBodys.Length;
            using (var wsr = wReq.GetRequestStream())
            {
                wsr.Write(btBodys, 0, btBodys.Length);
            }
            //-----传递相关操作参数-----

            WebResponse wResp = wReq.GetResponse();
            Stream respStream = wResp.GetResponseStream();

            string resultJson;
            using (StreamReader reader = new StreamReader(respStream,Encoding.UTF8))
            {
                resultJson = reader.ReadToEnd();
            }
            //Json数据:desc描述,code状态码
            return resultJson;
        }

        //【工具】计算SHA1值
        private static string SHA1_Hash(string str_sha1_in)
        {
            SHA1 sha1 = new SHA1CryptoServiceProvider();
            byte[] bytes_sha1_in = UTF8Encoding.Default.GetBytes(str_sha1_in);
            byte[] bytes_sha1_out = sha1.ComputeHash(bytes_sha1_in);
            string str_sha1_out = BitConverter.ToString(bytes_sha1_out);
            str_sha1_out = str_sha1_out.Replace("-", "").ToLower();
            return str_sha1_out;
        }
    }
}

  

时间: 2024-10-15 06:18:59

网易云信IM C#.Net请求、操作网易云通信ID的相关文章

大而广不如小而美 网易云信凭什么赢在PaaS大时代?

(上图为网易云信总经理阮良) 进入2016年就是云计算十周年之际,在过去十年中以IaaS为主的云服务已经得到了充分的发展,出现了AWS亚马逊云为代表的一批提供IaaS服务的国际云公司,以及国内的阿里云.青云.华云数据等IaaS云厂商.除了IaaS外,SaaS云应用软件也在过去的五年中得到了投资者的重视,甲骨文.SAP.微软等软件厂商纷纷转向SaaS云业务. 艾瑞咨询发布的<2016年中国IM云服务行业白皮书>指出,云服务的不同模式处于不同的发展阶段,其中PaaS起步最晚.入局者最少.发展空间大

网易云,都踩过了网易20年的哪些坑儿?

(上图为网易杭州研究院执行院长汪源) 云计算的核心与本质是什么?网易杭州研究院云计算平台产品部总监.网易云基础服务(网易蜂巢)容器云研发负责人陈谔讲了一个故事:网易云基础服务(网易蜂巢)最初的版本,从申请资源开始监测到虚拟机.容器全部启动,大概需要两分半钟,陈谔认为这个速度太慢,希望20秒内启动容器. "大家觉得这个事情太困难,几乎不可能完成.于是,接下来分解阶段性目标,先优化到1分钟.再到40秒.再到20秒,让大家看自己的环节还有哪些潜力可以挖掘.最后,实现了20秒左右完成一个容器的建立(除去

网易云信即时通讯推送保障及网络优化详解(三)

如何在弱网环境下优化大数据传输 对于移动APP来说,IM功能正变得越来越重要,它能够创建起人与人之间的连接.社交类产品中,用户与用户之间的沟通可以产生出更好的用户粘性. 在复杂的 Android 生态环境下,多种因素都会造成消息推送不能及时达到客户端.另外,不稳定的移动网络也给数据传输的速率和可靠性增加了障碍. 本文详解了网易云信IM SDK在应对弱网环境.移动端硬件限制以及Android复杂的生态现状时的探索与心得.如何实现不影响用户体验的后台保活,改善的长连接加推送组合方案,以及在弱网环境大

网易独特的创新机制,能否让网易云成为一匹黑马?

(上图为网易杭州研究院执行院长汪源) 2016年11月10日,网易发布了2016年Q3财报,其中净收入92.12亿元人民币.同比增长38.1%,净利润为27.4亿元,同比增长45.6%,而同期的百度Q3财报显示总营收首次出现下滑,阿里Q3的净利润也下降59%.当然,百度和阿里的总体市值仍然高于网易,但网易近年来神奇的股价表现背后,到底是什么样的内在原因? 2016年11月25日,在北京国家会议中心召开的GITC 2016全球互联网技术大会上,网易杭州研究院(以下简称网易研究院)执行院长汪源回顾了

2018数字化转型将爆发,网易云信探索PaaS三大商业模式

在云服务的三种形态中,IaaS.PaaS和SaaS分别代表了云基础设施服务.云应用开发服务和云应用服务.根据市场调查公司IDC最新的2017年上半年全球市场数据:SaaS占云服务市场份额68.7%,但增长率却只有同比22.9%:IaaS是最经典的云服务形式,占整个云服务市场的17.8%达同比增长38.1%:而PaaS虽然目前只占最少的份额为13.6%,但却是最高的同比增长达50.2%. 以AWS亚马逊云和阿里云为代表的IaaS业务和以微软.Oracle为代表的SaaS业务已经取得了市场的认可并形

亚马逊Echo与网易云都做了同样的选择,只为这场变革!

根据eMarketer于2017年4月的数据,亚马逊Echo已经占据美国智能音箱70.6%的市场.2017年5月9日亚马逊正式发布了最新Echo触屏版,这款叫做Echo Show的产品加入了一个7英寸的触摸屏,最大的卖点在于支持视频通话,预定的用户会将在2017年6月28号后陆续收到产品. 新一代Echo选择把视频与语音二合一已经令整个业界大为震惊,而另一家中国云公司网易云在2017年初选择把旗下的云通信与云视频产品二合一,也令业界吃惊不小.网易云计算于2015年对外开放,主打场景化云服务,目前

网易云易盾朱浩齐:视听行业步入强监管和智能时代

2018年,文娱视听行业首先感受到一股监管寒潮,一大批知名泛娱乐产品遭到监管约谈.内容安全成为行业不得不重视的Top问题,视听系统的构建绕不开内容安全,视听行业的从业者也需要越来越关注内容安全.LiveVideoStack邮件采访了国内内容安全领先厂商网易云易盾CTO朱浩齐,分享内容安全的技术现状与未来挑战. LiveVideoStack:请简单介绍自己和负责的工作?和业界其他厂商相比,有什么特别的故事? 朱浩齐:网易云安全(易盾)是网易云旗下的一站式安全服务,脱胎于网易安全部门.我们在过去20

网易云音乐评论爬虫(2):歌曲的全部评论

用过网易云音乐听歌的朋友都知道,网易云音乐每首歌曲后面都有很多评论,热门歌曲的评论更是接近百万或者是超过百万条.现在我就来分享一下如何爬取网易云音乐歌曲的全部评论,由于网易云音乐的评论都做了混淆加密处理,因此我们需要深入了解它的加密过程之后才能爬取到网易云音乐歌曲的全部评论. 加qq群813622576或vx;tanzhouyiwan免费领取Python学习资料 一,首先分析数据的请求方式 网易云音乐歌曲页面的URL形式为https://music.163.com/#/song?id=歌曲id号

我在网易云信是如何做运维的

先介绍下网易云信运维工程师的主要职责,包括但不限于软硬件部署.网络管理.应用代码维护.安全漏洞修复.容量规划.故障处理.性能优化等. 云信的运维工程师们很相信一个神圣的定律--墨菲定律:事情如果有变坏的可能,不管这种可能性有多小,它总会发生(Anything that can go wrong will go wrong).根据墨菲定律的推论,任何一个环节都不是100%靠谱的.而对于云信这样的及时通讯云平台来说,核心功能保证99.99%的可靠性,也就是说,一年不可用时长要小于52分钟.因此容灾是