登录功能代码

简介:

登录功能代码

复制代码
       #region 私有字段
private string responseString;
private static string key;
private static string url;
private static string session;
private static string token;
private static string nick;
#endregion

/// <summary>
/// 获取身份码 和识别码
/// </summary>
/// <returns></returns>
public string GetUniqueID()
{
byte[] byteArray = DeviceExtendedProperties.GetValue("DeviceUniqueId") as byte[];
string strTemp = "";
string strDeviceUniqueID = "";
foreach (byte bt in byteArray)
{
strTemp
= bt.ToString();
if (1 == strTemp.Length)
{
strTemp
= "00" + strTemp;
}
else if (2 == strTemp.Length)
{
strTemp
= "0" + strTemp;
}
strDeviceUniqueID
+= strTemp;
}
return strDeviceUniqueID;
}
/// <summary>
/// 将身份码和识别码以字典集合的形式返回
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public List<string> GetStr(string str)
{
List
<string> strList = new List<string>();
strList.Add(str.Substring(
0, 15));
strList.Add(str.Substring(
14, 15));
return strList;
}
/// <summary>
/// 得到签名
/// </summary>
/// <param name="appkey"></param>
/// <param name="appsecret"></param>
/// <returns></returns>
public string CreateSign(string appkey, string appsecret)
{
string str = appkey + appsecret + DateTime.Now.Millisecond;
MD5Helper MD5
= MD5Helper.Create();

str
= Convert.ToBase64String(MD5.ComputeHash(Encoding.UTF8.GetBytes(str)));

return str;
}
/// <summary>
/// Load事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{

//登陆第一步 调用第一个接口:com.taobao.wireless.mtop.getLoginUrl
List<string> strList = GetStr(GetUniqueID());
string url = "http://api.m.taobao.com/rest/api2.do?api=com.taobao.wireless.mtop.getLoginUrl";
string ttid = "&ttid=400000_12315576@wp7stk_windowsphone7_1.0.0";
string data = "&data={%22appkey%22:%2212315576%22}";
url
+= "&v=windowsphone7Client";
url
+= ttid;
url
+= "&imei=";
url
+= strList[0].ToString();
url
+= "&imsi=";
url
+= strList[1].ToString();
url
+= data;
url
+= "&sign=";
url
+= CreateSign("12315576", "5734907fbdd9af8f23493a9411ba9805");
//----------------------------------------以上为字符串的拼接,调用几个方法最终将url拼装成需要的请求的地址

//WebBrowserTask web = new WebBrowserTask();
//web.URL = url;
//web.Show();
//-------------------------------------以下为发出请求,切忌,此步单单是请求,并没有发送请求的数据流
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType
= "application/x-www-form-urlencoded;charset=utf-8";
request.Method
= "POST";
request.BeginGetResponse(
new AsyncCallback(GetResponseCallback), request);
}
private void GetResponseCallback(IAsyncResult asynchronousResult)
{
//try
//{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
HttpWebResponse response
= (HttpWebResponse)request.EndGetResponse(asynchronousResult);
Stream streamResponse
= response.GetResponseStream();
StreamReader streamRead
= new StreamReader(streamResponse);
responseString
= streamRead.ReadToEnd(); //以字符串形式接收json数据
//---------------------------------------------------注意此步为解析json数据,在本页底部为此定义了Text和Data两个实体类
byte[] b = Encoding.UTF8.GetBytes(responseString);
MemoryStream stream
= new MemoryStream(b);
DataContractJsonSerializer data
= new DataContractJsonSerializer(typeof(Text));
Text t
= (Text)data.ReadObject(stream);
key
= t.Data.Key;
url
= t.Data.Url;
//------------------------------------------------------------------------------------------------------------------
streamResponse.Close();
streamRead.Close();
response.Close();

Dispatcher.BeginInvoke(
()
=>
{
this.webBLoad.Navigate(new Uri(url));
MessageBox.Show(
"请在登录后授权本软件!", "温馨提示", MessageBoxButton.OK);
});
//}
//catch
//{
// MessageBox.Show("网络连接有误!");
//}
}

private void GetResponseCall(IAsyncResult asynchronousResult)
{

HttpWebRequest request
= (HttpWebRequest)asynchronousResult.AsyncState;
HttpWebResponse response
= (HttpWebResponse)request.EndGetResponse(asynchronousResult);
Stream streamResponse
= response.GetResponseStream();
StreamReader streamRead
= new StreamReader(streamResponse);
responseString
= streamRead.ReadToEnd();
//---------------------------------------------------------此部分也是解析json数据,在本页底部也为此定义了Test和data两个实体类
byte[] b = Encoding.UTF8.GetBytes(responseString);
MemoryStream stream
= new MemoryStream(b);
DataContractJsonSerializer data
= new DataContractJsonSerializer(typeof(Test));
Test t
= (Test)data.ReadObject(stream);
token
= t.Data.Token;
session
= t.Data.Topsession;
nick
= t.Data.Nick;
//-----------------------------------------------------------------------------------------------------
LoadBLL.GetLoad(nick, session);
streamResponse.Close();
streamRead.Close();
response.Close();

Dispatcher.BeginInvoke(
()
=>
{
if (LoadBLL.Load.Count == 0 || LoadBLL.Load[0] == null)
{
MessageBox.Show(
"登录授权失败!");
NavigationService.GoBack();
}
else
{
NavigationService.GoBack();
}

});
}

private void webBLoad_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
if (e.Uri.AbsolutePath.Equals("/mtop/bind_app_result.htm"))
{
List
<string> strList = GetStr(GetUniqueID());
string uri = "http://api.m.taobao.com/rest/api2.do?api=com.taobao.client.mtop.getUserSessionKey";
string ttid = "&ttid=400000_12315576@wp7stk_windowsphone7_1.0.0";
string data = "&data={\"key\":\"" + key + "\",\"appkey\":\"12315576\"}";
uri
+= "&v=windowsphone7Client";
uri
+= ttid;
uri
+= "&imei=";
uri
+= strList[0].ToString();
uri
+= "&imsi=";
uri
+= strList[1].ToString();
uri
+= data;
uri
+= "&sign=";
uri
+= CreateSign("12315576", "5734907fbdd9af8f23493a9411ba9805");
this.webBLoad. Navigate(new Uri(uri));
HttpWebRequest request
= (HttpWebRequest)WebRequest.Create(uri);
request.ContentType
= "application/x-www-form-urlencoded;charset=utf-8";
request.Method
= "POST";
request.BeginGetResponse(
new AsyncCallback(GetResponseCall), request);
}
}

private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
{
PageOrientation ori
= this.Orientation;
if (ori == PageOrientation.Portrait || ori == PageOrientation.PortraitDown || ori == PageOrientation.PortraitUp || ori == PageOrientation.None)
{
this.webBLoad.Height = 720;
this.webBLoad.Width=480;
}
if (ori == PageOrientation.Landscape || ori == PageOrientation.LandscapeLeft || ori == PageOrientation.LandscapeRight)
{
this.webBLoad.Width = 730;
this.webBLoad.Height = 430;
}
}
}
复制代码

 几个在登录功能用到的类的命名空间:using System.Runtime.Serialization;

ContractedBlock.gif View Code

 UI:           

<phone:WebBrowser HorizontalAlignment="Left"  Name="webBLoad" VerticalAlignment="Top" Width="480" Height="720" Vavigated="webBLoad_Navigated" />

本文转自SanMaoSpace博客园博客,原文链接:http://www.cnblogs.com/SanMaoSpace/archive/2011/08/18/2144368.html,如需转载请自行联系原作者


相关文章
|
7月前
|
存储 前端开发 PHP
构建一个简单的网站,包括用户注册、登录功能
构建一个简单的网站,包括用户注册、登录功能
76 1
|
小程序 数据安全/隐私保护 开发者
【已解决】开发者扫码登录提示“需要验证小程序密码”
开发者扫码登录提示“需要验证小程序密码”
483 0
【已解决】开发者扫码登录提示“需要验证小程序密码”
|
5月前
|
Java 数据库连接 数据库
用户登录功能实现案例
用户登录功能实现案例
37 0
|
5月前
|
存储 小程序 关系型数据库
后台交互-个人中心->小程序登录微信登录接口演示,小程序授权登录理论,小程序授权登录代码演示,微信表情包存储问题
后台交互-个人中心->小程序登录微信登录接口演示,小程序授权登录理论,小程序授权登录代码演示,微信表情包存储问题
60 0
|
PHP
laravel-admin 自定义登陆逻辑,补充原有账号密码登录
laravel-admin 自定义登陆逻辑,补充原有账号密码登录
266 0
|
存储 SQL 编解码
一个简单的登录功能,你真的会测试吗?
一个简单的登录功能,你真的会测试吗?
92 0
|
XML 存储 Java
登录功能(接口) | 学习笔记
快速学习登录功能(接口)
224 0
|
数据安全/隐私保护 开发者 Python
登录功能的实现| 学习笔记
快速学习登录功能的实现
66 0
后台登录模块理解
后台登录模块理解
|
JSON 前端开发 JavaScript
接口测试平台代码实现12:用户管理系统的后台代码-登录
上节,我们尝试制作了一个登陆页面前端,有的小伙伴反馈说有点跟不上前端开发这块,这是正常的,而且公众号又不是什么直播课程,是没有跟不跟的上之说,哪怕一周敲出来一节课的内容也无所谓。不过的确前端开发对我们测试来说一直是一块黑洞,很少有人掌握这里的技术,或者说我们做出来的东西有点丑,不过这正常,如果好看的话,基本都去做前端开发了。
接口测试平台代码实现12:用户管理系统的后台代码-登录