Quickblox从c#添加新用户

时间:2015-03-26 08:38:29

标签: quickblox

我想在我的应用程序的帮助下在Quickblox中创建用户。我正在使用Microsoft dotnet。任何人都可以共享代码。

1 个答案:

答案 0 :(得分:1)

       public  string Timestamp()
    {
        long ticks = DateTime.UtcNow.Ticks - DateTime.Parse("01/01/1970 00:00:00").Ticks;
        ticks /= 10000000;
        return ticks.ToString();
    }
    public  string Hash(string input, string key)
    {
        var encoding = new System.Text.ASCIIEncoding();
        byte[] keyByte = encoding.GetBytes(key);
        HMACSHA1 myhmacsha1 = new HMACSHA1(keyByte);
        byte[] byteArray = Encoding.ASCII.GetBytes(input);
        MemoryStream stream = new MemoryStream(byteArray);
        byte[] hashValue = myhmacsha1.ComputeHash(stream);
        return string.Join("", Array.ConvertAll(hashValue, b => b.ToString("x2")));
    }
    public string GetToken()
    {
        if (HttpContext.Current == null || String.IsNullOrEmpty(Convert.ToString(HttpContext.Current.Cache["QuickBloxToken"])))
        {
        string url = "https://api.quickblox.com"; //ConfigurationManager.AppSettings["ChatUrl"].ToString();
        HttpWebRequest httpWReq = (HttpWebRequest)WebRequest.Create(url + "/session.xml");

        httpWReq.UserAgent = ".NET Framework Test Client";

        string application_id = System.Configuration.ConfigurationManager.AppSettings["QuickApplication_id"].ToString();
        string auth_key = System.Configuration.ConfigurationManager.AppSettings["QuickAuth_key"].ToString();
        string timestamp = Timestamp();
        string auth_secret = System.Configuration.ConfigurationManager.AppSettings["QuickAuth_secret"].ToString();

        ASCIIEncoding encoding = new ASCIIEncoding();
        string postData = "application_id=" + application_id;
        postData += "&auth_key=" + auth_key;


        Random rand = new Random();

        postData += "&nonce=" + rand.Next(1000, 9999);
        postData += "&timestamp=" + timestamp;
        string signature = Hash(postData, auth_secret);
        postData += "&signature=" + signature;
        byte[] data = encoding.GetBytes(postData);

        httpWReq.Method = "POST";

        httpWReq.ContentLength = data.Length;
        httpWReq.Headers["QuickBlox-REST-API-Version"] = "0.1.0";

        using (Stream stream = httpWReq.GetRequestStream())
        {
            stream.Write(data, 0, data.Length);
        }

        HttpWebResponse response = (HttpWebResponse)httpWReq.GetResponse();
        string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();

        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(responseString);

        var nodes = xmlDoc.SelectNodes("session");
        string token = nodes[0].SelectSingleNode("token").InnerText;

        if (HttpContext.Current != null)
                HttpContext.Current.Cache.Add("QuickBloxToken", token, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, 70, 0), System.Web.Caching.CacheItemPriority.Default, null);
            return token;
        }
        else
            return Convert.ToString(HttpContext.Current.Cache["QuickBloxToken"]);

    }
       try
        {
            userName = userName.ToLower();
            fullName = ConvertintoTitleCase(fullName);
            string ExistingUserID = string.Empty;
            string token = GetToken();
                string login, password;
                login = userName;
                password = "abcd12345#";
                HttpWebRequest httpWReq = (HttpWebRequest)WebRequest.Create("http://api.quickblox.com/users.xml");
                string postData = "user[login]=" + login;
                postData += "&user[password]=" + password;
                postData += "&user[full_name]=" + fullName;
                postData += "&user[email]=vikash@icreon.com";

                ASCIIEncoding encoding = new ASCIIEncoding();
                byte[] data = encoding.GetBytes(postData);
                httpWReq.UserAgent = ".NET Framework Test Client";
                httpWReq.Method = "POST";
                httpWReq.ContentLength = data.Length;
                //httpWReq.ContentType = "application/x-www-form-urlencoded";
                httpWReq.Headers["QuickBlox-REST-API-Version"] = "0.1.0";
                httpWReq.Headers["QB-Token"] = token;
                using (Stream stream = httpWReq.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }

                HttpWebResponse response = (HttpWebResponse)httpWReq.GetResponse();
                string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
                XDocument xmlDoc = XDocument.Parse(responseString);

                var UserID = (from uid in xmlDoc.Elements(XName.Get("user"))
                              select uid.Element("id").Value).FirstOrDefault();

                id = UserID.ToString();
                return true;
        }
        catch (Exception ex)
        {
            id = string.Empty;
            return false;
        }