I have a .net app I am modifying that I can't seem to get fully working. I've included the code below and the reslts i'm writing back after that.
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
{
public string ConsumerKey
{
get
{
return "dj0yJmk9em9YNXRnd1M3V0dzJmQ9WVdrOVQwMVpjVk55TlRBbWNHbzlNelUyT1RJNU16WXkmcz1jb25zdW1lcnNlY3JldCZ4PTFl";
}
}
public string ConsumerSecret
{
get
{
return "6a771ee67b22540c587d48509391ff435c0493cb";
}
}
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:34109/OAuth-yahoo/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()
{
//Response.Write("Test!");
//OAuthBase oauth = new OAuthBase();
//Uri uri = new Uri("http://query.yahooapis.com/v1/yql?q=select%20*%20from%20fantasysports.leagues%20where%20league_key%3D'257.l.24009'&diagnostics=true");
//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 getdata = new StringBuilder(uri.ToString());
//Response.Write("URL: " + getdata.ToString());
//try
//{
// string returnStr = string.Empty;
// HttpWebRequest req = (HttpWebRequest)WebRequest.Create(getdata.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) + "\"";
// req.Headers.Add(authHeader);
// HttpWebResponse res = (HttpWebResponse)req.GetResponse();
// StreamReader streamReader = new StreamReader(res.GetResponseStream());
// returnStr = streamReader.ReadToEnd();
// Response.Write(returnStr);
//}
//catch(WebException ex)
//{
// Response.Write(ex.Message.ToString());
//}
OAuthBase oauth = new OAuthBase();
//Uri uri = new Uri("http://social.yahooapis.com/v1/user/" + OauthYahooGuid + "/contacts?format=XML");
Uri uri = new Uri("http://query.yahooapis.com/v1/yql?q=select%20*%20from%20fantasysports.leagues%20where%20league_key%3D'257.l.24009'");
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("Quer URL: " + sbGetContacts.ToString() + "<br>");
//Response.End();
try
{
string returnStr = string.Empty;
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sbGetContacts.ToString());
Console.WriteLine("<br>Request: " + req.ToString() + "<br>");
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>Auth Headers: " + authHeader);
req.Headers.Add(authHeader);
Response.Write("<br>Request: " + req.Headers.ToString());
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
Response.Write("<br> Response: " + res.ToString());
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("<br>consumer secret: " + ConsumerSecret + "<br>");
Response.Write("<br>consume rkey: " + ConsumerKey + "<br>");
//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);
}
}
=====================================================
Response after authorizing my app
=====================================================
Quer URL: http://query.yahooapis.com/v1/yql?q=select * from fantasysports.leagues where league_key='257.l.24009'
Auth Headers: Authorization: OAuth realm="yahooapis.com",oauth_consumer_key="dj0yJmk9em9YNXRnd1M3V0dzJmQ9WVdrOVQwMVpjVk55TlRBbWNHbzlNelUyT1RJNU16WXkmcz1jb25zdW1lcnNlY3JldCZ4PTFl",oauth_nonce="9031992",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1320595886",oauth_token="A%3DELCbnAbYtEeCABm1pFQf89juSRPVZcrFQDsSo.MljhDoSJlVG6h3045c19dxIRwPZM9m5DVdJe9F4EfBGPzPwMf4K7lnQXVyIer3FxTxGMlSr.cSNT3pqK57PJLiX5e3M_5og.WWaT8Nw5le_FYcdps7M7hGZnlMmfT45993ltavtQMhTgyZT9QpcN2RrKXllRsnvr_pdFwoMLlHQAm_62iuEIA8Tzs5M8QXZ95yXuegHSCDBxqADzyyqbkYFnqbcm0PC3hg6iq0ADic.ypr_rvSR5dNsBFO.S7d9dtT0FWWxPjS_x0lSGp8GwQo422LTWjNxv1vPdL5UtO3d1bz6SdKKVI1q.NcvFVPgiFIQl96TFJAiSM9w9HymP0Auj384r0jmCq3cQmgj4LRPbCZ0Z2u0O87C4gufJ.ErTvXlALUd_2jE8G_8kUHt0v1euYShFJQ65.RJJy1OzPxGNoHj8GjQzWwDxv7oICIyyU3MK2Gdk19X7gycKFnOg3NcZaYwW5sZ13AMkit442ZVAXT4MedMT14Q1rX.KcoQaEUVSwa05.EUyAh8BuDIM579CX28YXD8Z7xRReMnTiAb1YYb_.kbqp76IloFPa2zGGi.boMz7CrUP8onVv8yi.xggRbURFGphgQfSJJgHbM8nvtxmTnqjGvCmta_PjD5rMx3KMaM8xXIM0C7f9FUhDPgESwVzsgqVRkoeyaRwkI7tbKACW5E8i.q2p9KsPPk2auT28iSK3c",oauth_version="1.0",oauth_signature="cuoneU2Foup2mnCjoY5wNzlF8ZM%3d"
Request: Authorization: OAuth realm="yahooapis.com",oauth_consumer_key="dj0yJmk9em9YNXRnd1M3V0dzJmQ9WVdrOVQwMVpjVk55TlRBbWNHbzlNelUyT1RJNU16WXkmcz1jb25zdW1lcnNlY3JldCZ4PTFl",oauth_nonce="9031992",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1320595886",oauth_token="A%3DELCbnAbYtEeCABm1pFQf89juSRPVZcrFQDsSo.MljhDoSJlVG6h3045c19dxIRwPZM9m5DVdJe9F4EfBGPzPwMf4K7lnQXVyIer3FxTxGMlSr.cSNT3pqK57PJLiX5e3M_5og.WWaT8Nw5le_FYcdps7M7hGZnlMmfT45993ltavtQMhTgyZT9QpcN2RrKXllRsnvr_pdFwoMLlHQAm_62iuEIA8Tzs5M8QXZ95yXuegHSCDBxqADzyyqbkYFnqbcm0PC3hg6iq0ADic.ypr_rvSR5dNsBFO.S7d9dtT0FWWxPjS_x0lSGp8GwQo422LTWjNxv1vPdL5UtO3d1bz6SdKKVI1q.NcvFVPgiFIQl96TFJAiSM9w9HymP0Auj384r0jmCq3cQmgj4LRPbCZ0Z2u0O87C4gufJ.ErTvXlALUd_2jE8G_8kUHt0v1euYShFJQ65.RJJy1OzPxGNoHj8GjQzWwDxv7oICIyyU3MK2Gdk19X7gycKFnOg3NcZaYwW5sZ13AMkit442ZVAXT4MedMT14Q1rX.KcoQaEUVSwa05.EUyAh8BuDIM579CX28YXD8Z7xRReMnTiAb1YYb_.kbqp76IloFPa2zGGi.boMz7CrUP8onVv8yi.xggRbURFGphgQfSJJgHbM8nvtxmTnqjGvCmta_PjD5rMx3KMaM8xXIM0C7f9FUhDPgESwVzsgqVRkoeyaRwkI7tbKACW5E8i.q2p9KsPPk2auT28iSK3c",oauth_version="1.0",oauth_signature="cuoneU2Foup2mnCjoY5wNzlF8ZM%3d"
consumer secret: 6a771ee67b22540c587d48509391ff435c0493cb
consume rkey: dj0yJmk9em9YNXRnd1M3V0dzJmQ9WVdrOVQwMVpjVk55TlRBbWNHbzlNelUyT1RJNU16WXkmcz1jb25zdW1lcnNlY3JldCZ4PTFl
The remote server returned an error: (401) Unauthorized.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
length: 6
stack trace: at System.Net.HttpWebRequest.GetResponse() at test_oauth_test.RetriveContacts() in c:\Users\charltoc\Desktop\OAuth-yahoo\oauth-test.aspx.cs:line 423
status: ProtocolError
Status Code: (401) Unauthorized
Status Description: Unauthorized
source: System
headers: 0: Accept-Encoding
headers: 1: 0
headers: 2: chunked
headers: 3: keep-alive
headers: 4: application/xml;charset=UTF-8
headers: 5: Sun, 06 Nov 2011 16:11:26 GMT
headers: 6: YTS/1.20.7
headers: 7: OAuth oauth_problem="OST_OAUTH_SIGNATURE_INVALID_ERROR", realm="yahooapis.com"
3 weeks later... does anybody from Yahoo or with experience patrol these forums? I see an awful lot of unanswered questions.
I have a .net app I am modifying that I can't seem to get fully working. I've included the code below and the reslts i'm writing back after that.
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
{
public string ConsumerKey
{
get
{
return "dj0yJmk9em9YNXRnd1M3V0dzJmQ9WVdrOVQwMVpjVk55TlRBbWNHbzlNelUyT1RJNU16WXkmcz1jb25zdW1lcnNlY3JldCZ4PTFl";
}
}
public string ConsumerSecret
{
get
{
return "6a771ee67b22540c587d48509391ff435c0493cb";
}
}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", "");
}
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:34109/OAuth-yahoo/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", "");
}
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()
{
//Response.Write("Test!");
//OAuthBase oauth = new OAuthBase();
//Uri uri = new Uri("http://query.yahooapis.com/v1/yql?q=select%20*%20from%20fantasysports.leagues%20where%20league_key%3D'257.l.24009'&diagnostics=true");
//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 getdata = new StringBuilder(uri.ToString());
//Response.Write("URL: " + getdata.ToString());
//try
//{
// string returnStr = string.Empty;
// HttpWebRequest req = (HttpWebRequest)WebRequest.Create(getdata.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) + "\"";// req.Headers.Add(authHeader);
// HttpWebResponse res = (HttpWebResponse)req.GetResponse();
// StreamReader streamReader = new StreamReader(res.GetResponseStream());
// returnStr = streamReader.ReadToEnd();
// Response.Write(returnStr);
//}
//catch(WebException ex)
//{
// Response.Write(ex.Message.ToString());
//}OAuthBase oauth = new OAuthBase();
//Uri uri = new Uri("http://social.yahooapis.com/v1/user/" + OauthYahooGuid + "/contacts?format=XML");
Uri uri = new Uri("http://query.yahooapis.com/v1/yql?q=select%20*%20from%20fantasysports.leagues%20where%20league_key%3D'257.l.24009'");
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("Quer URL: " + sbGetContacts.ToString() + "
");
//Response.End();
try
{
string returnStr = string.Empty;
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sbGetContacts.ToString());Console.WriteLine("
Request: " + req.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("
Auth Headers: " + authHeader);req.Headers.Add(authHeader);
Response.Write("
Request: " + req.Headers.ToString());HttpWebResponse res = (HttpWebResponse)req.GetResponse();
Response.Write("
Response: " + res.ToString());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 + "
");
//}
//grvMyFriends.DataSource = emails;
//grvMyFriends.DataBind();
}
#region error
catch (WebException ex)
{
Response.Write("
consumer secret: " + ConsumerSecret + "
");
Response.Write("
consume rkey: " + ConsumerKey + "
");//Response.Write(ex.Message);
Response.Write("
" + ex.Message + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
Response.Write("
length: " + ex.Source.Length.ToString());
Response.Write("
stack trace: " + ex.StackTrace);
Response.Write("
status: " + ex.Status.ToString());
HttpWebResponse res = (HttpWebResponse)ex.Response;
int code = Convert.ToInt32(res.StatusCode);Response.Write("
Status Code: (" + code.ToString() + ") " + res.StatusCode.ToString());
Response.Write("
Status Description: " + res.StatusDescription);if (ex.InnerException != null)
{
Response.Write("
innerexception: " + ex.InnerException.Message);
}if (ex.Source.Length > 0)
Response.Write("
source: " + ex.Source.ToString());if (res != null)
{
for (int i = 0; i < res.Headers.Count; i++)
{
Response.Write("
headers: " + i.ToString() + ": " + res.Headers[i]);
}
}
}
#endregion error
}
protected void Button1_Click(object sender, EventArgs e)
{
string authorizationUrl = string.Empty;
authorizationUrl = GetRequestToken();
RedirectUserForAuthorization(authorizationUrl);
}}
=====================================================
Response after authorizing my app
=====================================================
Quer URL: http://query.yahooapis.com/v1/yql?q=select * from fantasysports.leagues where league_key='257.l.24009'
Auth Headers: Authorization: OAuth realm="yahooapis.com",oauth_consumer_key="dj0yJmk9em9YNXRnd1M3V0dzJmQ9WVdrOVQwMVpjVk55TlRBbWNHbzlNelUyT1RJNU16WXkmcz1jb25zdW1lcnNlY3JldCZ4PTFl",oauth_nonce="9031992",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1320595886",oauth_token="A%3DELCbnAbYtEeCABm1pFQf89juSRPVZcrFQDsSo.MljhDoSJlVG6h3045c19dxIRwPZM9m5DVdJe9F4EfBGPzPwMf4K7lnQXVyIer3FxTxGMlSr.cSNT3pqK57PJLiX5e3M_5og.WWaT8Nw5le_FYcdps7M7hGZnlMmfT45993ltavtQMhTgyZT9QpcN2RrKXllRsnvr_pdFwoMLlHQAm_62iuEIA8Tzs5M8QXZ95yXuegHSCDBxqADzyyqbkYFnqbcm0PC3hg6iq0ADic.ypr_rvSR5dNsBFO.S7d9dtT0FWWxPjS_x0lSGp8GwQo422LTWjNxv1vPdL5UtO3d1bz6SdKKVI1q.NcvFVPgiFIQl96TFJAiSM9w9HymP0Auj384r0jmCq3cQmgj4LRPbCZ0Z2u0O87C4gufJ.ErTvXlALUd_2jE8G_8kUHt0v1euYShFJQ65.RJJy1OzPxGNoHj8GjQzWwDxv7oICIyyU3MK2Gdk19X7gycKFnOg3NcZaYwW5sZ13AMkit442ZVAXT4MedMT14Q1rX.KcoQaEUVSwa05.EUyAh8BuDIM579CX28YXD8Z7xRReMnTiAb1YYb_.kbqp76IloFPa2zGGi.boMz7CrUP8onVv8yi.xggRbURFGphgQfSJJgHbM8nvtxmTnqjGvCmta_PjD5rMx3KMaM8xXIM0C7f9FUhDPgESwVzsgqVRkoeyaRwkI7tbKACW5E8i.q2p9KsPPk2auT28iSK3c",oauth_version="1.0",oauth_signature="cuoneU2Foup2mnCjoY5wNzlF8ZM%3d"
Request: Authorization: OAuth realm="yahooapis.com",oauth_consumer_key="dj0yJmk9em9YNXRnd1M3V0dzJmQ9WVdrOVQwMVpjVk55TlRBbWNHbzlNelUyT1RJNU16WXkmcz1jb25zdW1lcnNlY3JldCZ4PTFl",oauth_nonce="9031992",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1320595886",oauth_token="A%3DELCbnAbYtEeCABm1pFQf89juSRPVZcrFQDsSo.MljhDoSJlVG6h3045c19dxIRwPZM9m5DVdJe9F4EfBGPzPwMf4K7lnQXVyIer3FxTxGMlSr.cSNT3pqK57PJLiX5e3M_5og.WWaT8Nw5le_FYcdps7M7hGZnlMmfT45993ltavtQMhTgyZT9QpcN2RrKXllRsnvr_pdFwoMLlHQAm_62iuEIA8Tzs5M8QXZ95yXuegHSCDBxqADzyyqbkYFnqbcm0PC3hg6iq0ADic.ypr_rvSR5dNsBFO.S7d9dtT0FWWxPjS_x0lSGp8GwQo422LTWjNxv1vPdL5UtO3d1bz6SdKKVI1q.NcvFVPgiFIQl96TFJAiSM9w9HymP0Auj384r0jmCq3cQmgj4LRPbCZ0Z2u0O87C4gufJ.ErTvXlALUd_2jE8G_8kUHt0v1euYShFJQ65.RJJy1OzPxGNoHj8GjQzWwDxv7oICIyyU3MK2Gdk19X7gycKFnOg3NcZaYwW5sZ13AMkit442ZVAXT4MedMT14Q1rX.KcoQaEUVSwa05.EUyAh8BuDIM579CX28YXD8Z7xRReMnTiAb1YYb_.kbqp76IloFPa2zGGi.boMz7CrUP8onVv8yi.xggRbURFGphgQfSJJgHbM8nvtxmTnqjGvCmta_PjD5rMx3KMaM8xXIM0C7f9FUhDPgESwVzsgqVRkoeyaRwkI7tbKACW5E8i.q2p9KsPPk2auT28iSK3c",oauth_version="1.0",oauth_signature="cuoneU2Foup2mnCjoY5wNzlF8ZM%3d"
consumer secret: 6a771ee67b22540c587d48509391ff435c0493cb
consume rkey: dj0yJmk9em9YNXRnd1M3V0dzJmQ9WVdrOVQwMVpjVk55TlRBbWNHbzlNelUyT1RJNU16WXkmcz1jb25zdW1lcnNlY3JldCZ4PTFl
The remote server returned an error: (401) Unauthorized.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
length: 6
stack trace: at System.Net.HttpWebRequest.GetResponse() at test_oauth_test.RetriveContacts() in c:\Users\charltoc\Desktop\OAuth-yahoo\oauth-test.aspx.cs:line 423
status: ProtocolError
Status Code: (401) Unauthorized
Status Description: Unauthorized
source: System
headers: 0: Accept-Encoding
headers: 1: 0
headers: 2: chunked
headers: 3: keep-alive
headers: 4: application/xml;charset=UTF-8
headers: 5: Sun, 06 Nov 2011 16:11:26 GMT
headers: 6: YTS/1.20.7
headers: 7: OAuth oauth_problem="OST_OAUTH_SIGNATURE_INVALID_ERROR", realm="yahooapis.com"
3 weeks later... does anybody from Yahoo or with experience patrol these forums? I see an awful lot of unanswered questions.