Click here to Skip to main content
15,886,362 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
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.

C#
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);
        //esponse.Write(emaillist[0][1].ToString());
        string name = "";
        Response.Write(emaillist.Count.ToString());
        //foreach (var cont in emaillist.ToArray())
        //{
        //    name += cont[0].ToString();
        //    Response.Write(name);
        //}
        }

    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.
Posted

1 solution

i am facing the same prob. no result found and on debuug redirected to error url..please provide a sol...
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900