Get Yahoo Contact for C# 
Create new Website
Create AppCode Folder
Create OAuthBase.cs in AppCode Folder
like
using System;
using
System.Security.Cryptography;
using
System.Collections.Generic;
using
System.Text;
using
System.Web;
namespace OAuth
{
    public class OAuthBase
    {
        /// <summary>
        /// Provides a predefined set of algorithms that are supported
officially by the protocol
        /// </summary>
        public enum SignatureTypes
        {
            HMACSHA1,
            PLAINTEXT,
            RSASHA1
        }
        /// <summary>
        /// Provides an internal
structure to sort the query parameter
        /// </summary>
        protected
class QueryParameter
        {
            private
string name = null;
            private
string value = null;
            public
QueryParameter(string name, string value)
            {
                this.name
= name;
                this.value
= value;
            }
            public
string Name
            {
                get
{ return name; }
            }
            public
string Value
            {
                get
{ return value; }
            }
        }
        /// <summary>
        /// Comparer class used to perform the sorting of the query
parameters
        /// </summary>
        protected
class QueryParameterComparer
: IComparer<QueryParameter>
        {
            #region
IComparer<QueryParameter> Members
            public
int Compare(QueryParameter
x, QueryParameter y)
            {
                if
(x.Name == y.Name)
                {
                    return
string.Compare(x.Value, y.Value);
                }
                else
                {
                    return
string.Compare(x.Name, y.Name);
                }
            }
            #endregion
        }
        protected
const string
OAuthVersion = "1.0";
        protected
const string
OAuthParameterPrefix = "oauth_";
        //
        // List of
know and used oauth parameters' names
        //        
        protected
const string
OAuthConsumerKeyKey = "oauth_consumer_key";
        protected const string OAuthCallbackKey = "oauth_callback";
        protected
const string
OAuthVersionKey = "oauth_version";
        protected
const string
OAuthSignatureMethodKey = "oauth_signature_method";
        protected
const string
OAuthSignatureKey = "oauth_signature";
        protected
const string
OAuthTimestampKey = "oauth_timestamp";
        protected
const string
OAuthNonceKey = "oauth_nonce";
        protected
const string
OAuthTokenKey = "oauth_token";
        protected
const string
OAuthTokenSecretKey = "oauth_token_secret";
        protected
const string
HMACSHA1SignatureType = "HMAC-SHA1";
        protected
const string
PlainTextSignatureType = "PLAINTEXT";
        protected
const string
RSASHA1SignatureType = "RSA-SHA1";
        protected Random
random = new Random();
        protected
string unreservedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~";
        /// <summary>
        /// Helper function to compute a hash value
        /// </summary>
        /// <param
name="hashAlgorithm">The hashing
algoirhtm used. If that algorithm needs some initialization, like HMAC and its
derivatives, they should be initialized prior to passing it to this function</param>
        /// <param
name="data">The data to hash</param>
        /// <returns>a Base64 string of the hash value</returns>
        private
string ComputeHash(HashAlgorithm
hashAlgorithm, string data)
        {
            if
(hashAlgorithm == null)
            {
                throw
new ArgumentNullException("hashAlgorithm");
            }
            if
(string.IsNullOrEmpty(data))
            {
                throw
new ArgumentNullException("data");
            }
            byte[]
dataBuffer = System.Text.Encoding.ASCII.GetBytes(data);
            byte[]
hashBytes = hashAlgorithm.ComputeHash(dataBuffer);
            return
Convert.ToBase64String(hashBytes);
        }
        /// <summary>
        /// Internal function to cut out all non oauth query string
parameters (all parameters not begining with "oauth_")
        /// </summary>
        /// <param
name="parameters">The query
string part of the Url</param>
        /// <returns>A list of QueryParameter each containing the parameter name
and value</returns>
        private
List<QueryParameter>
GetQueryParameters(string parameters)
        {
            if
(parameters.StartsWith("?"))
            {
                parameters =
parameters.Remove(0, 1);
            }
            List<QueryParameter> result = new List<QueryParameter>();
            if
(!string.IsNullOrEmpty(parameters))
            {
                string[]
p = parameters.Split('&');
                foreach
(string s in p)
                {
                    if
(!string.IsNullOrEmpty(s) &&
!s.StartsWith(OAuthParameterPrefix))
                    {
                        if (s.IndexOf('=') > -1)
                        {
                            string[] temp = s.Split('=');
                            result.Add(new QueryParameter(temp[0],
temp[1]));
                        }
                        else
                        {
                            result.Add(new QueryParameter(s,
string.Empty));
                        }
                    }
                }
            }
            return
result;
        }
        /// <summary>
        /// This is a different Url Encode implementation since the
default .NET one outputs the percent encoding in lower case.
        /// While this is not a problem with the percent encoding
spec, it is used in upper case throughout OAuth
        /// </summary>
        /// <param
name="value">The value to Url
encode</param>
        /// <returns>Returns a Url encoded string</returns>
        protected
string UrlEncode(string
value)
        {
            StringBuilder
result = new StringBuilder();
            foreach
(char symbol in
value)
            {
                if
(unreservedChars.IndexOf(symbol) != -1)
                {
                    result.Append(symbol);
                }
                else
                {
                    result.Append('%' + String.Format("{0:X2}", (int)symbol));
                }
            }
            return
result.ToString();
        }
        /// <summary>
        /// Normalizes the request parameters according to the spec
        /// </summary>
        /// <param
name="parameters">The list of
parameters already sorted</param>
        /// <returns>a string representing the normalized parameters</returns>
        protected
string NormalizeRequestParameters(IList<QueryParameter>
parameters)
        {
            StringBuilder
sb = new StringBuilder();
            QueryParameter
p = null;
            for
(int i = 0; i < parameters.Count; i++)
            {
                p = parameters[i];
                sb.AppendFormat("{0}={1}", p.Name, p.Value);
                if
(i < parameters.Count - 1)
                {
                    sb.Append("&");
                }
            }
            return
sb.ToString();
        }
        /// <summary>
        /// Generate the signature base that is used to produce the
signature
        /// </summary>
        /// <param
name="url">The full url that
needs to be signed including its non OAuth url parameters</param>
        /// <param
name="consumerKey">The consumer
key</param>        
        /// <param
name="token">The token, if
available. If not available pass null or an empty string</param>
        /// <param
name="tokenSecret">The token
secret, if available. If not available pass null or an empty string</param>
        /// <param
name="httpMethod">The http method
used. Must be a valid HTTP method verb (POST,GET,PUT, etc)</param>
        /// <param name="signatureType">The signature type. To use the default values use <see cref="OAuthBase.SignatureTypes">OAuthBase.SignatureTypes</see>.</param>
        /// <returns>The signature base</returns>
        public string GenerateSignatureBase(Uri
url, string consumerKey, string token, string
tokenSecret, string httpMethod, string timeStamp, string
nonce, string signatureType, out string
normalizedUrl, out string
normalizedRequestParameters)
        {
            if
(token == null)
            {
                token = string.Empty;
            }
            if
(tokenSecret == null)
            {
                tokenSecret = string.Empty;
            }
            if
(string.IsNullOrEmpty(consumerKey))
            {
                throw
new ArgumentNullException("consumerKey");
            }
            if
(string.IsNullOrEmpty(httpMethod))
            {
                throw
new ArgumentNullException("httpMethod");
            }
            if
(string.IsNullOrEmpty(signatureType))
            {
                throw
new ArgumentNullException("signatureType");
            }
            normalizedUrl = null;
            normalizedRequestParameters = null;
            List<QueryParameter> parameters =
GetQueryParameters(url.Query);
            parameters.Add(new QueryParameter(OAuthVersionKey,
OAuthVersion));
            parameters.Add(new QueryParameter(OAuthNonceKey,
nonce));
            parameters.Add(new QueryParameter(OAuthTimestampKey,
timeStamp));
            parameters.Add(new QueryParameter(OAuthSignatureMethodKey,
signatureType));
            parameters.Add(new QueryParameter(OAuthConsumerKeyKey,
consumerKey));
            if
(!string.IsNullOrEmpty(token))
            {
                parameters.Add(new
QueryParameter(OAuthTokenKey, token));
            }
            parameters.Sort(new QueryParameterComparer());
            normalizedUrl = string.Format("{0}://{1}",
url.Scheme, url.Host);
            if
(!((url.Scheme == "http"
&& url.Port == 80) || (url.Scheme == "https"
&& url.Port == 443)))
            {
                normalizedUrl += ":" + url.Port;
            }
            normalizedUrl += url.AbsolutePath;
            normalizedRequestParameters =
NormalizeRequestParameters(parameters);
            StringBuilder
signatureBase = new StringBuilder();
            signatureBase.AppendFormat("{0}&", httpMethod.ToUpper());
            signatureBase.AppendFormat("{0}&", UrlEncode(normalizedUrl));
            signatureBase.AppendFormat("{0}",
UrlEncode(normalizedRequestParameters));
            return
signatureBase.ToString();
        }
        /// <summary>
        /// Generate the signature value based on the given signature
base and hash algorithm
        /// </summary>
        /// <param
name="signatureBase">The
signature based as produced by the GenerateSignatureBase method or by any other
means</param>
        /// <param
name="hash">The hash algorithm
used to perform the hashing. If the hashing algorithm requires initialization
or a key it should be set prior to calling this method</param>
        /// <returns>A base64 string of the hash value</returns>
        public string GenerateSignatureUsingHash(string signatureBase, HashAlgorithm
hash)
        {
            return
ComputeHash(hash, signatureBase);
        }
        /// <summary>
        /// Generates a signature using the HMAC-SHA1 algorithm
        /// </summary>        
        /// <param
name="url">The full url that
needs to be signed including its non OAuth url parameters</param>
        /// <param
name="consumerKey">The consumer
key</param>
        /// <param
name="consumerSecret">The
consumer seceret</param>
        /// <param
name="token">The token, if
available. If not available pass null or an empty string</param>
        /// <param
name="tokenSecret">The token
secret, if available. If not available pass null or an empty string</param>
        /// <param
name="httpMethod">The http method
used. Must be a valid HTTP method verb (POST,GET,PUT, etc)</param>
        /// <returns>A base64 string of the hash value</returns>
        public string GenerateSignature(Uri
url, string consumerKey, string consumerSecret, string
token, string tokenSecret, string httpMethod, string
timeStamp, string nonce, out string
normalizedUrl, out string
normalizedRequestParameters)
        {
            return
GenerateSignature(url, consumerKey, consumerSecret, token, tokenSecret,
httpMethod, timeStamp, nonce, SignatureTypes.HMACSHA1,
out normalizedUrl, out
normalizedRequestParameters);
        }
        /// <summary>
        /// Generates a signature using the specified signatureType 
        /// </summary>        
        /// <param
name="url">The full url that
needs to be signed including its non OAuth url parameters</param>
        /// <param
name="consumerKey">The consumer
key</param>
        /// <param
name="consumerSecret">The
consumer seceret</param>
        /// <param
name="token">The token, if
available. If not available pass null or an empty string</param>
        /// <param
name="tokenSecret">The token
secret, if available. If not available pass null or an empty string</param>
        /// <param
name="httpMethod">The http method
used. Must be a valid HTTP method verb (POST,GET,PUT, etc)</param>
        /// <param
name="signatureType">The type of
signature to use</param>
        /// <returns>A base64 string of the hash value</returns>
        public string GenerateSignature(Uri
url, string consumerKey, string consumerSecret, string
token, string tokenSecret, string httpMethod, string
timeStamp, string nonce, SignatureTypes signatureType, out string
normalizedUrl, out string
normalizedRequestParameters)
        {
            normalizedUrl = null;
            normalizedRequestParameters = null;
            switch
(signatureType)
            {
                case
SignatureTypes.PLAINTEXT:
                    return
HttpUtility.UrlEncode(string.Format("{0}&{1}",
consumerSecret, tokenSecret));
                case
SignatureTypes.HMACSHA1:
                    string
signatureBase = GenerateSignatureBase(url, consumerKey, token, tokenSecret,
httpMethod, timeStamp, nonce, HMACSHA1SignatureType, out
normalizedUrl, out normalizedRequestParameters);
                    HMACSHA1
hmacsha1 = new HMACSHA1();
                    hmacsha1.Key = Encoding.ASCII.GetBytes(string.Format("{0}&{1}",
UrlEncode(consumerSecret), string.IsNullOrEmpty(tokenSecret)
? "" : UrlEncode(tokenSecret)));
                    return
GenerateSignatureUsingHash(signatureBase, hmacsha1);
                case
SignatureTypes.RSASHA1:
                    throw
new NotImplementedException();
                default:
                    throw
new ArgumentException("Unknown signature type", "signatureType");
            }
        }
        /// <summary>
        /// Generate the timestamp for the signature        
        /// </summary>
        /// <returns></returns>
       
        public virtual string
GenerateTimeStamp()
        {
            //
Default implementation of UNIX time of the current UTC time
            TimeSpan
ts = DateTime.UtcNow - new DateTime(1970,
1, 1, 0, 0, 0, 0);
            string
timeStamp = ts.TotalSeconds.ToString();
            timeStamp = timeStamp.Substring(0,
timeStamp.IndexOf("."));
            return
timeStamp;
        }
        /// <summary>
        /// Generate a nonce
        /// </summary>
        /// <returns></returns>
        public virtual string GenerateNonce()
        {
            // Just a
simple implementation of a random number between 123400 and 9999999
            return
random.Next(123400, 9999999).ToString();
        }
    }
}
Download OAuth.Net.Common.dll and reference
to bin folder
Create oauth-test.aspx page like
<%@ Page
Language="C#"
AutoEventWireup="true"
CodeFile="oauth-test.aspx.cs"
Inherits="test_oauth_test"
%>
<!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>Untitled
Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" Text="Connect to Yahoo!" OnClick="Button1_Click"
/>
        <asp:Label runat="server" ID="ResponseMessage1"></asp:Label>
        <asp:GridView ID="grvMyFriends" runat="server" AutoGenerateColumns="false" CellPadding="5"
            GridLines="None">
            <HeaderStyle BackColor="#025A8E" Font-Bold="true" ForeColor="White" HorizontalAlign="Left" />
            <RowStyle BackColor="#DFDFDF" HorizontalAlign="Left" />
            <AlternatingRowStyle BackColor="#F0F0F0" HorizontalAlign="Left" />
            <Columns>
                <asp:TemplateField HeaderText="Email">
                    <ItemTemplate>
                        <%#
Container.DataItem %>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            <EmptyDataTemplate>
                No Friend List Found
            </EmptyDataTemplate>
        </asp:GridView>
    </div>
    </form>
</body>
</html>
Create oauth-test.aspx.cs file like
using System;
using
System.Configuration;
using
System.Data;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.HtmlControls;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Net;
using System.IO;
using
OAuth.Net.Common;
using
OAuth.Net.Components;
using
OAuth.Net.Consumer;
using OAuth;
using
System.Text;
using
System.Xml;
using
System.Collections;
using
System.Collections.Generic;
using
System.Net.Mail;
using System.Text.RegularExpressions;
public partial class test_oauth_test : System.Web.UI.Page
{
    string
ConsumerKey = ConfigurationManager.AppSettings["ConsumerKey"].ToString();
    string
ConsumerSecret = ConfigurationManager.AppSettings["ConsumerSecret"].ToString();
    
    
    public string OauthVerifier
    {
        get
        {
            try
            {
                if
(!string.IsNullOrEmpty(Session["Oauth_Verifier"].ToString()))
                    return
Session["Oauth_Verifier"].ToString();
                else
                    return
string.Empty;
            }
            catch
            {
                return
string.Empty;
            }
        }
        set
        {
            Session["Oauth_Verifier"]
= value;
        }
    }
    public string OauthToken
    {
        get
        {
            if
(!string.IsNullOrEmpty(Session["Oauth_Token"].ToString()))
                return
Session["Oauth_Token"].ToString();
            else
                return
string.Empty;
        }
        set
        {
            Session["Oauth_Token"]
= value;
        }
    }
    public string OauthTokenSecret
    {
        get
        {
            if
(!string.IsNullOrEmpty(Session["Oauth_Token_Secret"].ToString()))
                return
Session["Oauth_Token_Secret"].ToString();
            else
                return
string.Empty;
        }
        set
        {
            Session["Oauth_Token_Secret"]
= value;
        }
    }
    public string OauthSessionHandle
    {
        get
        {
            if
(!string.IsNullOrEmpty(Session["Oauth_Session_Handle"].ToString()))
                return
Session["Oauth_Session_Handle"].ToString();
            else
                return
string.Empty;
        }
        set
        {
            Session["Oauth_Session_Handle"]
= value;
        }
    }
    public string OauthYahooGuid
    {
        get
        {
            try
            {
                if
(!string.IsNullOrEmpty(Session["Oauth_Yahoo_Guid"].ToString()))
                    return
Session["Oauth_Yahoo_Guid"].ToString();
                else
                    return
string.Empty;
            }
            catch
            {
                return
string.Empty;
            }
        }
        set
        {
            Session["Oauth_Yahoo_Guid"]
= value;
        }
    }
    protected void Page_Load(object
sender, EventArgs e)
    {
        if
(!IsPostBack)
        {
            string
oauth_token = Request["oauth_token"];
            string
oauth_verifier = Request["oauth_verifier"];
            if
(!string.IsNullOrEmpty(oauth_verifier)
&& oauth_verifier != "")
            {
                Button1.Visible = false;
                OauthToken = oauth_token;
                OauthVerifier = oauth_verifier;
                RegisterStartupScript("refresh", "<script
type='text/javascript'>window.opener.location = 'oauth-test.aspx';
self.close();</script>");
            }
            else
if (!string.IsNullOrEmpty(OauthVerifier))
            {
                Button1.Visible = false;
                if
(string.IsNullOrEmpty(OauthYahooGuid))
                    GetAccessToken(OauthToken,
OauthVerifier);
                //RefreshToken();
                RetriveContacts();
            }
        }
    }
    private string GetRequestToken()
    {
        string
authorizationUrl = string.Empty;
        OAuthBase
oauth = new OAuthBase();
        Uri
uri = new Uri("https://api.login.yahoo.com/oauth/v2/get_request_token");
        string
nonce = oauth.GenerateNonce();
        string
timeStamp = oauth.GenerateTimeStamp();
        string
normalizedUrl;
        string
normalizedRequestParameters;
        string
sig = oauth.GenerateSignature(uri, ConsumerKey, ConsumerSecret, string.Empty, string.Empty,
"GET", timeStamp, nonce, OAuthBase.SignatureTypes.PLAINTEXT,
out normalizedUrl, out
normalizedRequestParameters); //OAuthBase.SignatureTypes.HMACSHA1
        StringBuilder
sbRequestToken = new StringBuilder(uri.ToString());
        sbRequestToken.AppendFormat("?oauth_nonce={0}&", nonce);
        sbRequestToken.AppendFormat("oauth_timestamp={0}&", timeStamp);
        sbRequestToken.AppendFormat("oauth_consumer_key={0}&",
ConsumerKey);
        sbRequestToken.AppendFormat("oauth_signature_method={0}&", "PLAINTEXT"); //HMAC-SHA1
        sbRequestToken.AppendFormat("oauth_signature={0}&", sig);
        sbRequestToken.AppendFormat("oauth_version={0}&", "1.0");
        sbRequestToken.AppendFormat("oauth_callback={0}", HttpUtility.UrlEncode("http://localhost:7450/GetYahooContact/oauth-test.aspx"));
        //Response.Write(sbRequestToken.ToString());
        //Response.End();
        try
        {
            string
returnStr = string.Empty;
            string[]
returnData;
            HttpWebRequest
req = (HttpWebRequest)WebRequest.Create(sbRequestToken.ToString());
            HttpWebResponse
res = (HttpWebResponse)req.GetResponse();
            StreamReader
streamReader = new StreamReader(res.GetResponseStream());
            returnStr =
streamReader.ReadToEnd();
            returnData = returnStr.Split(new Char[] { '&' });
            //Response.Write(returnStr);
            int
index;
            if
(returnData.Length > 0)
            {
                //index
= returnData[0].IndexOf("=");
                //string
oauth_token = returnData[0].Substring(index + 1);
                //Session["Oauth_Token"]
= oauth_token;
                index = returnData[1].IndexOf("=");
                string
oauth_token_secret = returnData[1].Substring(index + 1);
                OauthTokenSecret = oauth_token_secret;
                //index
= returnData[2].IndexOf("=");
                //int
oauth_expires_in;
                //Int32.TryParse(returnData[2].Substring(index
+ 1), out oauth_expires_in);
                //Session["Oauth_Expires_In"]
= oauth_expires_in;
                index = returnData[3].IndexOf("=");
                string
oauth_request_auth_url = returnData[3].Substring(index + 1);
                authorizationUrl = HttpUtility.UrlDecode(oauth_request_auth_url);
            }
        }
        catch (WebException ex)
        {
            Response.Write(ex.Message);
        }
        return
authorizationUrl;
    }
    private void RedirectUserForAuthorization(string authorizationUrl)
    {
        //Response.Redirect(authorizationUrl);
        RegisterStartupScript("openwin", "<script
type='text/javascript'>window.open('" + authorizationUrl + "','mywindow',
'left=250,top=50,menubar=0,resizable=0,location=1,toolbar=0,status=1,scrollbars=0,width=500,height=455');</script>");
    }
    private void GetAccessToken(string
oauth_token, string oauth_verifier)
    {
        OAuthBase
oauth = new OAuthBase();
        Uri
uri = new Uri("https://api.login.yahoo.com/oauth/v2/get_token");
        string
nonce = oauth.GenerateNonce();
        string
timeStamp = oauth.GenerateTimeStamp();
        string
sig = ConsumerSecret + "%26" +
OauthTokenSecret;
        StringBuilder
sbAccessToken = new StringBuilder(uri.ToString());
        sbAccessToken.AppendFormat("?oauth_consumer_key={0}&",
ConsumerKey);
        sbAccessToken.AppendFormat("oauth_signature_method={0}&", "PLAINTEXT"); //HMAC-SHA1
        sbAccessToken.AppendFormat("oauth_signature={0}&", sig);
        sbAccessToken.AppendFormat("oauth_timestamp={0}&", timeStamp);
        sbAccessToken.AppendFormat("oauth_version={0}&", "1.0");
        sbAccessToken.AppendFormat("oauth_token={0}&", oauth_token);
        sbAccessToken.AppendFormat("oauth_nonce={0}&", nonce);
        sbAccessToken.AppendFormat("oauth_verifier={0}", oauth_verifier);
        //Response.Write(sbAccessToken.ToString());
        //Response.End();
        try
        {
            string
returnStr = string.Empty;
            string[]
returnData;
            HttpWebRequest
req = (HttpWebRequest)WebRequest.Create(sbAccessToken.ToString());
            HttpWebResponse
res = (HttpWebResponse)req.GetResponse();
            StreamReader
streamReader = new StreamReader(res.GetResponseStream());
            returnStr =
streamReader.ReadToEnd();
            returnData = returnStr.Split(new Char[] { '&' });
            //Response.Write(returnStr);
            //Response.End();
            int
index;
            if
(returnData.Length > 0)
            {
                index = returnData[0].IndexOf("=");
                OauthToken =
returnData[0].Substring(index + 1);
                index = returnData[1].IndexOf("=");
                string
oauth_token_secret = returnData[1].Substring(index + 1);
                OauthTokenSecret =
oauth_token_secret;
                //index
= returnData[2].IndexOf("=");
                //int
oauth_expires_in;
                //Int32.TryParse(returnData[2].Substring(index
+ 1), out oauth_expires_in);
                index = returnData[3].IndexOf("=");
                string
oauth_session_handle = returnData[3].Substring(index + 1);
                OauthSessionHandle =
oauth_session_handle;
                //index
= returnData[4].IndexOf("=");
                //int
oauth_authorization_expires_in;
                //Int32.TryParse(returnData[4].Substring(index
+ 1), out oauth_authorization_expires_in);
                index = returnData[5].IndexOf("=");
                string
xoauth_yahoo_guid = returnData[5].Substring(index + 1);
                OauthYahooGuid =
xoauth_yahoo_guid;
            }
        }
        catch (WebException ex)
        {
            Response.Write(ex.Message);
        }
    }
    private void RefreshToken()
    {
        OAuthBase
oauth = new OAuthBase();
        Uri
uri = new Uri("https://api.login.yahoo.com/oauth/v2/get_token");
        string
nonce = oauth.GenerateNonce();
        string
timeStamp = oauth.GenerateTimeStamp();
        string
sig = ConsumerSecret + "%26" +
OauthTokenSecret;
        StringBuilder
sbrefreshToken = new StringBuilder(uri.ToString());
        sbrefreshToken.AppendFormat("?oauth_consumer_key={0}&",
ConsumerKey);
        sbrefreshToken.AppendFormat("oauth_signature_method={0}&", "PLAINTEXT"); //HMAC-SHA1
        sbrefreshToken.AppendFormat("oauth_signature={0}&", sig);
        sbrefreshToken.AppendFormat("oauth_timestamp={0}&", timeStamp);
        sbrefreshToken.AppendFormat("oauth_version={0}&", "1.0");
        sbrefreshToken.AppendFormat("oauth_token={0}&", OauthToken);
        sbrefreshToken.AppendFormat("oauth_session_handle={0}&",
OauthSessionHandle);
        sbrefreshToken.AppendFormat("oauth_nonce={0}", nonce);
        try
        {
            string
returnStr = string.Empty;
            string[]
returnData;
            HttpWebRequest
req = (HttpWebRequest)WebRequest.Create(sbrefreshToken.ToString());
            HttpWebResponse
res = (HttpWebResponse)req.GetResponse();
            StreamReader
streamReader = new StreamReader(res.GetResponseStream());
            returnStr =
streamReader.ReadToEnd();
            returnData = returnStr.Split(new Char[] { '&' });
            //Response.Write(returnStr);
            int
index;
            if
(returnData.Length > 0)
            {
                index = returnData[0].IndexOf("=");
                string
oauth_token = returnData[0].Substring(index + 1);
                OauthToken = oauth_token;
                index = returnData[1].IndexOf("=");
                string
oauth_token_secret = returnData[1].Substring(index + 1);
                OauthTokenSecret =
oauth_token_secret;
                //index
= returnData[2].IndexOf("=");
                //int
oauth_expires_in;
                //Int32.TryParse(returnData[2].Substring(index
+ 1), out oauth_expires_in);
                index = returnData[3].IndexOf("=");
                string
oauth_session_handle = returnData[3].Substring(index + 1);
                OauthSessionHandle =
oauth_session_handle;
                //index
= returnData[4].IndexOf("=");
                //int
oauth_authorization_expires_in;
                //Int32.TryParse(returnData[4].Substring(index
+ 1), out oauth_authorization_expires_in);
                index = returnData[5].IndexOf("=");
                string
xoauth_yahoo_guid = returnData[5].Substring(index + 1);
                OauthYahooGuid =
xoauth_yahoo_guid;
            }
        }
        catch (WebException ex)
        {
            Response.Write(ex.Message);
        }
    }
    private void RetriveContacts()
    {
        OAuthBase oauth = new
OAuthBase();
        Uri
uri = new Uri("http://social.yahooapis.com/v1/user/" +
OauthYahooGuid + "/contacts?format=XML");
        string
nonce = oauth.GenerateNonce();
        string
timeStamp = oauth.GenerateTimeStamp();
        string
normalizedUrl;
        string
normalizedRequestParameters;
        string
sig = oauth.GenerateSignature(uri, ConsumerKey, ConsumerSecret, OauthToken,
OauthTokenSecret, "GET",
timeStamp, nonce, OAuthBase.SignatureTypes.HMACSHA1, out
normalizedUrl, out
normalizedRequestParameters);
        StringBuilder
sbGetContacts = new StringBuilder(uri.ToString());
        //Response.Write("URL:
" + sbGetContacts.ToString());
        //Response.End();
        try
        {
            string
returnStr = string.Empty;
            HttpWebRequest
req = (HttpWebRequest)WebRequest.Create(sbGetContacts.ToString());
            req.Method = "GET";
            string
authHeader = "Authorization: OAuth "
+
            "realm=\"yahooapis.com\""
+
            ",oauth_consumer_key=\""
+ ConsumerKey + "\"" +
            ",oauth_nonce=\""
+ nonce + "\"" +
            ",oauth_signature_method=\"HMAC-SHA1\""
+
            ",oauth_timestamp=\""
+ timeStamp + "\"" +
            ",oauth_token=\""
+ OauthToken + "\"" +
            ",oauth_version=\"1.0\""
+
            ",oauth_signature=\""
+ HttpUtility.UrlEncode(sig) + "\"";
            //Response.Write("</br>Headers:
" + authHeader);
            req.Headers.Add(authHeader);
            HttpWebResponse
res = (HttpWebResponse)req.GetResponse();
            StreamReader
streamReader = new StreamReader(res.GetResponseStream());
            returnStr =
streamReader.ReadToEnd();
            XmlDocument
xmldoc = new XmlDocument();
            xmldoc.LoadXml(returnStr);
            XmlNodeList
elemList = xmldoc.DocumentElement.GetElementsByTagName("fields");
            ArrayList
emails = new ArrayList();
            for
(int i = 0; i < elemList.Count; i++)
            {
                if
(elemList[i].ChildNodes[1].InnerText == "email")
                   
emails.Add(elemList[i].ChildNodes[2].InnerText);
                //Response.Write(elemList[i].ChildNodes[2].InnerText
+ "<br/>");
            }
            grvMyFriends.DataSource = emails;
            grvMyFriends.DataBind();
        }
        #region error
        catch (WebException ex)
        {
            //Response.Write(ex.Message);
            Response.Write("<br/>" + ex.Message + "</br>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
            Response.Write("<br/>length: " +
ex.Source.Length.ToString());
            Response.Write("<br/>stack trace: " +
ex.StackTrace);
            Response.Write("<br/>status: " +
ex.Status.ToString());
            HttpWebResponse
res = (HttpWebResponse)ex.Response;
            int
code = Convert.ToInt32(res.StatusCode);
            Response.Write("<br/>Status Code: (" +
code.ToString() + ") " +
res.StatusCode.ToString());
            Response.Write("<br/>Status Description: " +
res.StatusDescription);
            if
(ex.InnerException != null)
            {
                Response.Write("<br/>innerexception: " +
ex.InnerException.Message);
            }
            if
(ex.Source.Length > 0)
                Response.Write("<br/>source: " +
ex.Source.ToString());
            if
(res != null)
            {
                for
(int i = 0; i < res.Headers.Count; i++)
                {
                    Response.Write("<br/>headers: " + i.ToString() + ": " + res.Headers[i]);
                }
            }
        }
        #endregion error
    }
    protected void Button1_Click(object
sender, EventArgs e)
    {
        string
authorizationUrl = string.Empty;
        authorizationUrl = GetRequestToken();
        RedirectUserForAuthorization(authorizationUrl);
    }
   
}
Manish Siddhapara ||
+91-97258 78998