使用Yahoo api报错401 Unauthorized

殷小强 2013-11-25 02:34:31
各位大侠,遇到一个问题,一直解决不了,找不到原因,
使用yahoo api过程中报错,401 Unauthorized
授权都成功,https://api.login.yahoo.com/oauth/v2/get_request_token,https://api.login.yahoo.com/oauth/v2/request_auth,https://api.login.yahoo.com/oauth/v2/get_token,这几个API都成功,拿到了最终的oauth_token,oauth_token_secret,guid等数据。但是问题来了,当我用 social profile的api时候,就报错了,
string url = string.Format("http://social.yahooapis.com/v1/user/{0}/profile?format=json", YahooToken.xoauthYahooGuid); 
,参考地址:http://developer.yahoo.com/oauth/guide/oauth-make-request.html,构造请求的那些数据,如nonce,timestamp,signature用的BaseOAuth类(http://oauth.googlecode.com/svn/code/csharp/OAuthBase.cs),授权过程中用的是PLAINTEXT方式,使用http://social.yahooapis.com/v1/user/{0}/profile?format=json api的时候用的是HMACSHA1方式。
有一个实例参考(http://blog.sina.com.cn/s/blog_7648f7170100qcdz.html),我也按照那上面的写的,授权登入成功,最后用user profile api也还是不行,一直报401.。。。崩溃了。。。。。。。
求各位大侠帮忙!!!!!!!!!!!!!!!!!!!
这到底啥原因!!!!!!!!!
顺便再吐槽一下。用过oauth2.0,觉得oauth 1.0 真心蛋疼。
求助!!!!!!!!!!!!!!!!!!!!!!!!!!!
string nUrl, nParams;
string nonce = this.GenerateNonce();
string timestamp = this.GenerateTimeStamp();
string UrlData = string.Format("http://social.yahooapis.com/v1/user/" + YahooToken.xoauthYahooGuid + "/profile?format=json");
string signature = this.GenerateSignature(new Uri(UrlData), clientID, clientSecret, YahooToken.oauthToken, YahooToken.oauthTokenSecret, "GET", timestamp, nonce, out nUrl, out nParams);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(UrlData));
request.Method = "GET";
StringBuilder sb = new StringBuilder();
sb.Append("Authorization: OAuth ");
sb.Append("realm=\"yahooapis.com\"");
sb.Append(",oauth_consumer_key=\"" + clientID + "\"");
sb.Append(",oauth_nonce=\"" + nonce + "\"");
sb.Append(",oauth_signature_method=\"HMAC-SHA1\"");
sb.Append(",oauth_timestamp=\"" + timestamp + "\"");
sb.Append(",oauth_token=\"" + YahooToken.oauthToken + "\"");
sb.Append(",oauth_version=\"1.0\"");
sb.Append(",oauth_signature=\"" + this.UrlEncode(signature) + "\"");
request.Headers.Add(sb.ToString());
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
...全文
586 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
风一样的大叔 2013-11-26
  • 打赏
  • 举报
回复
最近也在研究oauth,对于你这个问题,只能爱莫能助了
殷小强 2013-11-25
  • 打赏
  • 举报
回复
殷小强 2013-11-25
  • 打赏
  • 举报
回复
有人知道吗?- -!!!!!
殷小强 2013-11-25
  • 打赏
  • 举报
回复
引用 1 楼 liuqian4243 的回复:
Ny-6000 2013-11-25
  • 打赏
  • 举报
回复

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧