在本例中,您正在访问公共数据(而不是用户私有数据),因此您将使用 OAuth 两条腿授权。 YDN 网站上的此页面是了解不同数据类型的良好起点:私有数据与公共数据 http://developer.yahoo.com/oauth/guide/oauth-private_public_data.html.
两条腿意味着您需要以某种方式签署您的请求(使用您的应用程序密钥和秘密),但没有用户授权步骤。 OAuth 签名通常很棘手,因此大多数人会使用 OAuth 库。
有一个很好的演练YQL 代码示例 http://developer.yahoo.com/yql/guide/yql-code-examples.html说明这一点的页面。向下滚动到“查询公共数据”部分,查看使用签名的两腿请求调用 YQL 的示例。
<?php
include_once("yosdk/lib/Yahoo.inc");
define("API_KEY","your-api-key-here");
define("SHARED_SECRET","your-secret-here");
YahooLogger::setDebug(true);
$twoleg = new YahooApplication (API_KEY, SHARED_SECRET);
$query = "select * from yahoo.finance.historicaldata where symbol =\"YHOO\" and startDate = \"2011-12-01\" and endDate = \"2011-12-04\"";
$results = $twoleg->query ($query);
print_r ($results);
运行上面的代码会给出一些历史股票数据,例如:
[quote] => Array
(
[0] => stdClass Object
(
[date] => 2011-12-02
[Date] => 2011-12-02
[Open] => 16.31
[High] => 16.41
[Low] => 16.03
[Close] => 16.05
[Volume] => 22714500
[Adj_Close] => 16.05
)
[1] => stdClass Object
(
[date] => 2011-12-01
[Date] => 2011-12-01
[Open] => 16.42
[High] => 16.46
[Low] => 16.09
[Close] => 16.23
[Volume] => 47059800
[Adj_Close] => 16.23
)
)
当然,您询问的是 C#,但希望这能为您提供更多关于所需内容的背景知识。我会搜索 C# 的两条腿 OAuth 解决方案 - 这个问题看起来有一些有效的答案:有人使用 DNOA 实施 2 Legged OAuth 吗? https://stackoverflow.com/questions/3032873/has-anybody-implemented-2-legged-oauth-using-dnoa.
这是另一个可能的解决方案,一个为您执行两条腿 OAuth 签名的 Web 服务:OAuth-ify 这个:YQL 的 2 足 OAuth 服务 http://nagiworld.net/2008/11/oauth-ify-this-2-legged-oauth-service-for-yql.