2016-03-26 10 views
2

Yahoo WeatherプライベートAPI呼び出しを実装することに固執しています。これは私が有効なclientId & Secretを使用して呼び出すたびに、私のコードスニペットです。それは401(無許可)を返します。Yahoo天気API(Oauthを使用)

var outhWc = new WebClient(); 
outhWc.Credentials = new NetworkCredential(clientId, clientSecret); 
outhWc.Headers.Add(HttpRequestHeader.Accept, "application/json"); 
var outhresponse = outhWc.DownloadData("https://query.yahooapis.com/v1/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.places(1)%20where%20text%3D%22nome%2C%20ak%22)&format=json"); 

常に例外がスローされます。また、NetworkCredentialsでユーザー名とパスワードを渡そうとしていて、さらにclientIdとSecretをヘッダーに渡そうとしましたが、成功した呼び出しを見つけることができません。

答えて

1

私はここで同じ問題を抱えています。最後に、私はあなたが見ることができるように、私はすでに、市内のIDを持っているhttp://oauth.googlecode.com/svn/code/csharp/OAuthBase.cs

public void LoadWeather() { 
     string URLDes, Params = ""; 
     string Signature, BaseURL, cKey, cSecret = ""; 

     OAuthBase oAuth = new OAuthBase(); 
     BaseURL = "http://weather.yahooapis.com/forecastrss?w=" + textBox1.Text + "&u=f"; 
     cKey = "YOUR API KEY"; 
     cSecret = "YOUR API SECRET"; 

     Signature = oAuth.GenerateSignature(new Uri(BaseURL), cKey, cSecret, "", "", "GET", oAuth.GenerateTimeStamp(), oAuth.GenerateNonce(), out URLDes, out Params); 

     WebClient wc = new WebClient(); 
     wc.DownloadStringCompleted += HttpsCompleted; 
     wc.DownloadStringAsync(new Uri(String.Format("{0}?{1}&oauth_signature={2}", URLDes, Params, Signature))); 
    } 

    private void HttpsCompleted(object sender, DownloadStringCompletedEventArgs e) { 
     if (e.Error == null) { 
      XDocument xdoc = XDocument.Parse(e.Result, LoadOptions.None); 
      xdoc.Save("c:\\weather.xml"); 
      richTextBox1.Text = xdoc.FirstNode.ToString(); 
     } else { 
      richTextBox1.Text = e.Error.Message; 
     } 
    } 

で発見OAuthのC#の単純なクラスをもとに、次のコードを実装しました。このサンプルは、APIによって返されたxml文字列をダウンロードします。私のために働いた、それが助けて欲しい!

関連する問題