Hi,
I developed on web application in which I import contacts from HotMail(live mail).
But it doesnt gives me proper result.
Please look into this code and help me out.
Thanx in Advance.
Default.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
private void GetMsnContacts(string code)
{
MsnImport msnImport = new MsnImport();
List<string> emaillist = new List<string>();
emaillist = msnImport.GetMsnContacts(code);
string name = "";
Response.Write(emaillist.Count.ToString());
}
protected void showList_Click(object sender, EventArgs e)
{
if (Request.QueryString["code"] != null)
{
MsnImport OBJ = new MsnImport();
GetMsnContacts(Request.QueryString["code"].ToString());
}
}
}
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<div>
<form id="one" runat="server">
<a href="https://oauth.live.com/authorize?client_id=00000000480E760D&scope=wl.basic&client_secret=VRZj0vQ5mz1pPys7Lq3sVatnzWGPCNeo&response_type=code&redirect_uri=http://select.bridgestone.co.in/Default2.aspx"> Click To Get Msn Contacts </a>
<asp:Button ID = "showList" runat="server" Text = "Submit" onclick="showList_Click" />
</form>
</div>
</body>
</html>
MsnImport.cs
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Configuration;
using System.IO;
using System.Net;
using System.Runtime.Serialization.Json;
using System.Web.Script.Serialization;
using System.Runtime.Serialization;
using System.ServiceModel;
/// <summary>
/// Summary description for MsnImport
/// </summary>
public class MsnImport
{
private const string wlCookie = "wl_auth";
private const string clientId = "00000000480E760D";
private string Callback = "http://select.bridgestone.co.in/Default2.aspx";
private const string clientSecret = "VRZj0vQ5mz1pPys7Lq3sVatnzWGPCNeo";
private const string oauthUrl = "https://oauth.live.com/token"";
private List<string> emaillist = new List<string>();
public List<string> GetMsnContacts(string code)
{
try
{
HttpContext context = HttpContext.Current;
string verifier = code;
OAuthToken token;
OAuthError error;
if (!string.IsNullOrEmpty(verifier))
{
RequestAccessTokenByVerifier(verifier, out token, out error);
}
}
catch (Exception ex) { }
return emaillist;
}
private void RequestAccessTokenByVerifier(string verifier, out OAuthToken token, out OAuthError error)
{
string content = String.Format("client_id={0}&redirect_uri={1}&client_secret={2}&code={3}&grant_type=authorization_code",
HttpUtility.UrlEncode(clientId),
HttpUtility.UrlEncode(Callback),
HttpUtility.UrlEncode(clientSecret),
HttpUtility.UrlEncode(verifier));
RequestAccessToken(content, out token, out error);
}
private void RequestAccessToken(string postContent, out OAuthToken token, out OAuthError error)
{
token = null;
error = null;
HttpWebRequest request =WebRequest.Create(oauthUrl) as HttpWebRequest;
request.Method = "POST";
try
{
using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
{
writer.Write(postContent);
}
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
if (response != null)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(OAuthToken));
token = serializer.ReadObject(response.GetResponseStream()) as OAuthToken;
if (token != null)
{
RequestContacts(token.AccessToken);
}
}
}
catch (Exception ex)
{}
}
private void RequestContacts(string AccessToken)
{
string content = String.Format("access_token={0}", HttpUtility.UrlEncode(AccessToken));
string url = "https://apis.live.net/v5.0/me/contacts?"" + content;
//string url = "https://apis.live.net/v5.0/me/contacts?access_token=" + AccessToken;
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
//request.Method = "POST";
request.Method = WebRequestMethods.Http.Get;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string tmp = reader.ReadToEnd();
JavaScriptSerializer ser = new JavaScriptSerializer();
Dictionary<string, object> dictionary = ser.Deserialize<Dictionary<string, object>>(tmp);
DisplayDictionary(dictionary);
}
public bool DisplayDictionary(Dictionary<string, object> dict)
{
bool bSuccess = false;
string abc = string.Empty;
foreach (string strKey in dict.Keys)
{
string strOutput = "";// "".PadLeft(indentLevel * 8) + strKey + ":";
object o = dict[strKey];
if (o is Dictionary<string, object>)
{
DisplayDictionary((Dictionary<string, object>)o);
}
else if (o is ArrayList)
{
foreach (object oChild in ((ArrayList)o))
{
if (oChild is string)
{
strOutput = ((string)oChild);
}
else if (oChild is Dictionary<string, object>)
{
DisplayDictionary((Dictionary<string, object>)oChild);
}
}
}
else
{
if (o != null)
{
strOutput = o.ToString();
if (strKey == "name")
{
if (strOutput.Contains("@"))
emaillist.Add(strOutput);
}
}
}
}
return bSuccess;
}
}
[DataContract]
public class OAuthToken
{
[DataMember(Name = OAuthConstants.AccessToken)]
public string AccessToken { get; set; }
[DataMember(Name = OAuthConstants.RefreshToken)]
public string RefreshToken { get; set; }
[DataMember(Name = OAuthConstants.ExpiresIn)]
public string ExpiresIn { get; set; }
[DataMember(Name = OAuthConstants.Scope)]
public string Scope { get; set; }
}
public static class OAuthConstants
{
public const string ClientID = "client_id";
public const string ClientSecret = "client_secret";
public const string Callback = "redirect_uri";
public const string ClientState = "state";
public const string Scope = "scope";
public const string Code = "code";
public const string AccessToken = "access_token";
public const string ExpiresIn = "expires_in";
public const string RefreshToken = "refresh_token";
public const string ResponseType = "response_type";
public const string GrantType = "grant_type";
public const string Error = "error";
public const string ErrorDescription = "error_description";
public const string Display = "display";
}
[DataContract]
public class OAuthError
{
public OAuthError(string code, string desc)
{
this.Code = code;
this.Description = desc;
}
[DataMember(Name = OAuthConstants.Error)]
public string Code { get; private set; }
[DataMember(Name = OAuthConstants.ErrorDescription)]
public string Description { get; private set; }
}
emaillist is the list where we print contacts but it doesnt show.
So i count it no. of contacts but still is shows zero.