0

Getting 401 Error when requesting contact information

I have been trying to get this to work for weeks now with no luck. I am trying to import contacts into a database from within a program. I successfully get the access token but get a 401 error when trying to get the contact information. Here are my basesignature, signature, and request header along with the code to get them. I use the latest OAuthBase.cs in C#

Signaturebase =

GET&http%3A%2F%2Fsocial.yahooapis.com%2Fv1%2Fuser%2FIHADHY2ZWIKAJWUXKDTJG57DSQ%2F
contacts&oauth_consumer_key%3Ddj0yJmk9bDhUc0VTWkhGVWNoJmQ9WVdrOVZUaEhUVWh1TTJNbWN
HbzlNakF3TmpnM09UQTNPQS0tJnM9Y29uc3VtZXJzZWNyZXQmeD1kMw--%26oauth_nonce%3D8565601
%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1263838441%26oauth_toke
n%3DA%3D2V1WeBbmjCi8MaNpWGUyZvfPNnE9oo6FtNgAeSgbt5PamnhZgQ2xVlbXPJPZqo1iO5NzBppCR
CMePKaCLX_dogvErklox5xUia6v0dv6fYskCx2uMeSIHG00xhwnndJPqC740x1dtHdfp7hn3lAaBvav.
c
ozN9gzQzlcqbknbabE6VftToe1tc7fscI0ocWgHs4g3SKrcH5Bqyfhx0vBC26cfVTtzruFLwefSubhXZ
1
b2Q_miPOy1IhAdp3yTFIC_00R13B1q50JFYFgN_4j6J3EQXJnN4b8Z3nxP5AVwkYnGW9eOFtMAt2wEmG
K
9gY792EHn6RD0yMQSpPGkzJCAMsRz2EbR1PgfL8_YdQkHguK_LOUNs_U4EBcHgFnx3JOHbXnEq34Th5m
3
yvXIyxCE6o_oE8UHNiDXHQocktkiZ23INB73e9ru.9foS_PTxExizDMtC3ENI3_ge.M_B6vMjDDJx33A
w
4o9u_R33oZ.m5j.wtYaEapOLAsqljOE80FE8vTKWUF9V5h_Z2s.pxvgbXe5Q82gdNvYOrUnwOSu6hh_S
g
Rd62ZdvskI1EqyvbOvSyU6E31T_ZEuBucvOVrXFB6M_QHEOebNh4cIzryNePCzy_YpQS3avZWVQnYi0O
g
21O0X8.kDte1SKHzd0lF8u0mZ8LbAy58FfsmSO3.cWhkK34c__Mg65b2MusWF2JmoFhxpIFnS3MLbS18
r
cAsCg--%26oauth_version%3D1.0


Signature =

dJjU7q6Jx2OU7bevkmbm2ct26fs=


Auth Request Header =

Authorization: OAuth realm = "http://yahooapis.com",oauth_consumer_key=
"dj0yJmk9bDhUc0VTWkhGVWNoJmQ9WVdrOVZUaEhUVWh1TTJNbWNHbzlNakF3TmpnM09UQT
NPQS0tJnM9Y29uc3VtZXJzZWNyZXQmeD1kMw--",oauth_nonce="8565601",oauth_sig
nature_method="HMAC-SHA1",oauth_timestamp="1263838441",oauth_token="A%3
D2V1WeBbmjCi8MaNpWGUyZvfPNnE9oo6FtNgAeSgbt5PamnhZgQ2xVlbXPJPZqo1iO5NzBp
pCRCMePKaCLX_dogvErklox5xUia6v0dv6fYskCx2uMeSIHG00xhwnndJPqC740x1dtHdfp
7hn3lAaBvav.cozN9gzQzlcqbknbabE6VftToe1tc7fscI0ocWgHs4g3SKrcH5Bqyfhx0vB
C26cfVTtzruFLwefSubhXZ1b2Q_miPOy1IhAdp3yTFIC_00R13B1q50JFYFgN_4j6J3EQXJ
nN4b8Z3nxP5AVwkYnGW9eOFtMAt2wEmGK9gY792EHn6RD0yMQSpPGkzJCAMsRz2EbR1PgfL
8_YdQkHguK_LOUNs_U4EBcHgFnx3JOHbXnEq34Th5m3yvXIyxCE6o_oE8UHNiDXHQocktki
Z23INB73e9ru.9foS_PTxExizDMtC3ENI3_ge.M_B6vMjDDJx33Aw4o9u_R33oZ.m5j.wtY
aEapOLAsqljOE80FE8vTKWUF9V5h_Z2s.pxvgbXe5Q82gdNvYOrUnwOSu6hh_SgRd62Zdvs
kI1EqyvbOvSyU6E31T_ZEuBucvOVrXFB6M_QHEOebNh4cIzryNePCzy_YpQS3avZWVQnYi0
Og21O0X8.kDte1SKHzd0lF8u0mZ8LbAy58FfsmSO3.cWhkK34c__Mg65b2MusWF2JmoFhxp
IFnS3MLbS18rcAsCg--",oauth_version="1.0",oauth_signature="dJjU7q6Jx2OU7
bevkmbm2ct26fs="

CODE USED TO GET THESE RESULTS:

Uri GetYahooContacts = new Uri("http://social.yahooapis.com/v1/user/" + yahooOAuthGUID + "/contacts");

string EncodedSIG = oAuth.GenerateSignature(GetYahooContacts, consumerKey, consumerSecret, YahooOAuthToken, yahooOAuthTokenSecret, "GET", timeStamp, nonce, out normalizedUrl, out normalizedRequestParameters);

string authHeader = "Authorization: OAuth " +
"realm = \"http://yahooapis.com\"" +
",oauth_consumer_key=\""+consumerKey+"\""+
",oauth_nonce=\""+nonce+"\""+
",oauth_signature_method=\"HMAC-SHA1\"" +
",oauth_timestamp=\"" + timeStamp+ "\"" +
",oauth_token=\"" + YahooOAuthToken+ "\"" +
",oauth_version=\"1.0\""+
",oauth_signature=\"" + EncodedSIG + "\"";

request = WebRequest.Create(GetYahooContacts.ToString()) as HttpWebRequest;

request.Headers.Add(authHeader);

using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
// StreamReader YahooContactsList = new StreamReader(response.GetResponseStream());
// YahooContacts = YahooContactsList.ReadToEnd();
// MessageBox.Show(YahooContacts);
MessageBox.Show("Finally Success");

}

by
3 Replies
  • QUOTE (Chad @ Jan 18 2010, 10:37 AM) <{POST_SNAPBACK}>
    I have been trying to get this to work for weeks now with no luck. I am trying to import contacts into a database from within a program. I successfully get the access token but get a 401 error when trying to get the contact information. Here are my basesignature, signature, and request header along with the code to get them. I use the latest OAuthBase.cs in C#

    Signaturebase =

    GET&http%3A%2F%2Fsocial.yahooapis.com%2Fv1%2Fuser%2FIHADHY2ZWIKAJWUXKDTJG57DSQ%2F
    contacts&oauth_consumer_key%3Ddj0yJmk9bDhUc0VTWkhGVWNoJmQ9WVdrOVZUaEhUVWh1TTJNbWN
    HbzlNakF3TmpnM09UQTNPQS0tJnM9Y29uc3VtZXJzZWNyZXQmeD1kMw--%26oauth_nonce%3D8565601
    %26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1263838441%26oauth_toke
    n%3DA%3D2V1WeBbmjCi8MaNpWGUyZvfPNnE9oo6FtNgAeSgbt5PamnhZgQ2xVlbXPJPZqo1iO5NzBppCR
    CMePKaCLX_dogvErklox5xUia6v0dv6fYskCx2uMeSIHG00xhwnndJPqC740x1dtHdfp7hn3lAaBvav.
    c
    ozN9gzQzlcqbknbabE6VftToe1tc7fscI0ocWgHs4g3SKrcH5Bqyfhx0vBC26cfVTtzruFLwefSubhXZ
    1
    b2Q_miPOy1IhAdp3yTFIC_00R13B1q50JFYFgN_4j6J3EQXJnN4b8Z3nxP5AVwkYnGW9eOFtMAt2wEmG
    K
    9gY792EHn6RD0yMQSpPGkzJCAMsRz2EbR1PgfL8_YdQkHguK_LOUNs_U4EBcHgFnx3JOHbXnEq34Th5m
    3
    yvXIyxCE6o_oE8UHNiDXHQocktkiZ23INB73e9ru.9foS_PTxExizDMtC3ENI3_ge.M_B6vMjDDJx33A
    w
    4o9u_R33oZ.m5j.wtYaEapOLAsqljOE80FE8vTKWUF9V5h_Z2s.pxvgbXe5Q82gdNvYOrUnwOSu6hh_S
    g
    Rd62ZdvskI1EqyvbOvSyU6E31T_ZEuBucvOVrXFB6M_QHEOebNh4cIzryNePCzy_YpQS3avZWVQnYi0O
    g
    21O0X8.kDte1SKHzd0lF8u0mZ8LbAy58FfsmSO3.cWhkK34c__Mg65b2MusWF2JmoFhxpIFnS3MLbS18
    r
    cAsCg--%26oauth_version%3D1.0


    Signature =

    dJjU7q6Jx2OU7bevkmbm2ct26fs=


    Auth Request Header =

    Authorization: OAuth realm = "http://yahooapis.com",oauth_consumer_key=
    "dj0yJmk9bDhUc0VTWkhGVWNoJmQ9WVdrOVZUaEhUVWh1TTJNbWNHbzlNakF3TmpnM09UQT
    NPQS0tJnM9Y29uc3VtZXJzZWNyZXQmeD1kMw--",oauth_nonce="8565601",oauth_sig
    nature_method="HMAC-SHA1",oauth_timestamp="1263838441",oauth_token="A%3
    D2V1WeBbmjCi8MaNpWGUyZvfPNnE9oo6FtNgAeSgbt5PamnhZgQ2xVlbXPJPZqo1iO5NzBp
    pCRCMePKaCLX_dogvErklox5xUia6v0dv6fYskCx2uMeSIHG00xhwnndJPqC740x1dtHdfp
    7hn3lAaBvav.cozN9gzQzlcqbknbabE6VftToe1tc7fscI0ocWgHs4g3SKrcH5Bqyfhx0vB
    C26cfVTtzruFLwefSubhXZ1b2Q_miPOy1IhAdp3yTFIC_00R13B1q50JFYFgN_4j6J3EQXJ
    nN4b8Z3nxP5AVwkYnGW9eOFtMAt2wEmGK9gY792EHn6RD0yMQSpPGkzJCAMsRz2EbR1PgfL
    8_YdQkHguK_LOUNs_U4EBcHgFnx3JOHbXnEq34Th5m3yvXIyxCE6o_oE8UHNiDXHQocktki
    Z23INB73e9ru.9foS_PTxExizDMtC3ENI3_ge.M_B6vMjDDJx33Aw4o9u_R33oZ.m5j.wtY
    aEapOLAsqljOE80FE8vTKWUF9V5h_Z2s.pxvgbXe5Q82gdNvYOrUnwOSu6hh_SgRd62Zdvs
    kI1EqyvbOvSyU6E31T_ZEuBucvOVrXFB6M_QHEOebNh4cIzryNePCzy_YpQS3avZWVQnYi0
    Og21O0X8.kDte1SKHzd0lF8u0mZ8LbAy58FfsmSO3.cWhkK34c__Mg65b2MusWF2JmoFhxp
    IFnS3MLbS18rcAsCg--",oauth_version="1.0",oauth_signature="dJjU7q6Jx2OU7
    bevkmbm2ct26fs="

    CODE USED TO GET THESE RESULTS:

    Uri GetYahooContacts = new Uri("http://social.yahooapis.com/v1/user/" + yahooOAuthGUID + "/contacts");

    string EncodedSIG = oAuth.GenerateSignature(GetYahooContacts, consumerKey, consumerSecret, YahooOAuthToken, yahooOAuthTokenSecret, "GET", timeStamp, nonce, out normalizedUrl, out normalizedRequestParameters);

    string authHeader = "Authorization: OAuth " +
    "realm = \"http://yahooapis.com\"" +
    ",oauth_consumer_key=\""+consumerKey+"\""+
    ",oauth_nonce=\""+nonce+"\""+
    ",oauth_signature_method=\"HMAC-SHA1\"" +
    ",oauth_timestamp=\"" + timeStamp+ "\"" +
    ",oauth_token=\"" + YahooOAuthToken+ "\"" +
    ",oauth_version=\"1.0\""+
    ",oauth_signature=\"" + EncodedSIG + "\"";

    request = WebRequest.Create(GetYahooContacts.ToString()) as HttpWebRequest;

    request.Headers.Add(authHeader);

    using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
    {
    // StreamReader YahooContactsList = new StreamReader(response.GetResponseStream());
    // YahooContacts = YahooContactsList.ReadToEnd();
    // MessageBox.Show(YahooContacts);
    MessageBox.Show("Finally Success");

    }


    Can you provide the entire http request and response. The oauth error code is in the http headers of the response.
    0
  • The response I am getting back is OAuth oauth_problem="unable_to_determine_oauth_type", realm="yahooapis.com"

    Don't know what this means? Please help.
    0
  • QUOTE (Chad @ Jan 20 2010, 08:29 AM) <{POST_SNAPBACK}>
    The response I am getting back is OAuth oauth_problem="unable_to_determine_oauth_type", realm="yahooapis.com"

    Don't know what this means? Please help.



    Was missing a space in my Auth header so the unable to determine oauth type went away now however I am getting a "signature invalid" Has anyone been succesful using the OauthBase.cs with this yahoo contact API? Why is this so difficult. Am I not suppose to include some values when passing information to the generate signature. ie leave one of the parameters as string.empty instead of having a value. And why does it respond back with a = sign at the end vs. %3D right now I am just manually finding the length stripping off the = sign and the adding the %3D I have tried a hundred different ways with no success so frustrating. Can someone provide the actual code used in C# to generate a signature using the oauthbase.cs or even creating the string by hand.

    Please HELP!!!!
    0

Recent Posts

in Contacts