- NOTE: This code was not written by Vyew, is was contributed, and we can make no guarantee it actually works. Please feel free to email us at “support at vyew.com” if you find a better way to do it. Thanks.
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.IO; using System.Net; using System.Text; using System.Security.Cryptography; protected void cmdButtonLogin_Click(object sender, EventArgs e) { // This button click will login to Vyew.com using specified account // and will redirect browser to the ""lobby" Vyew.com page of this account: string sCmd = "login"; string sParams = "email=user@company.com|pw=secret123"; string sResult = VyewAPI(sCmd, sParams); string[] sSplitResult = sResult.Split('|'); if (sSplitResult[0].Trim() == "1") { //successfull login, redirect to vyewbook page URL returned by API string sCode = sSplitResult[1]; string sURL = sSplitResult[2]; sURL = sURL.Replace(Environment.NewLine, ""); Response.Redirect(sURL); Response.End(); } else { //API failed Response.Write("Vyew API failed, retval=" + sResult); Response.End(); } } private string VyewAPI(string sCmd, string sParams) { string sApiUrl = "https://vyew.com/api/api.php"; string sKey = "XXXXXXXXXX"; //my Vyew API key string sSecret = "YYYYYYYYYYYYYYYYYYYY"; //my Vyew API secret phrase Int64 nEpochTime = GetEpochTime(); string sQ = "cmd=" + sCmd; string[] sParamsArray = sParams.Split('|'); foreach (string st in sParamsArray) { string[] sArgArr = st.Split('='); sQ += ("&" + sArgArr[0] + "=" + Server.UrlEncode(sArgArr[1])); } sQ += ("&key=" + sKey); sQ += ("&time=" + nEpochTime.ToString()); string sMD5 = GetMD5Hash(sQ + sSecret); string sURL = sApiUrl + "?" + sQ + "&md5=" + sMD5; string sResponse = ""; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sURL); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream resStream = response.GetResponseStream(); string tempString = ""; int count = 0; byte[] buf = new byte[8192]; do { count = resStream.Read(buf, 0, buf.Length); if (count != 0) { // translate from bytes to ASCII text tempString = Encoding.ASCII.GetString(buf, 0, count); sResponse += tempString; } } while (count > 0); // any more data to read? return sResponse; } private Int64 GetEpochTime() { // Returns number of seconds elapsed since Jan 1 1970 Int64 retval = 0; DateTime dt1 = DateTime.Parse("January 1 1970 00:00:00 GMT"); DateTime dt2 = DateTime.Now; TimeSpan t = (dt2 - dt1); retval = (Int64)(t.TotalSeconds); return retval; } string GetMD5Hash(string sInputString) { // Returns a hash (message digest) of the input string. // See internet RFC 1321, "The MD5 Message-Digest Algorithm" ASCIIEncoding enc = new ASCIIEncoding(); //Convert the string into an array of bytes. byte[] buffer = enc.GetBytes(sInputString); //Create the md5 hash provider. MD5 md = new MD5CryptoServiceProvider(); //Compute the hash value from the array of bytes. byte[] hash = md.ComputeHash(buffer); string sResult = ""; foreach(byte b in hash) { sResult += b.ToString("x2"); } return sResult; }