1

在我搜索市场数据源时,我被带到了 YQL 的 yahoo Finance。它看起来很棒,而且对于公共使用/查询非常简单,但是公共版本的每日限制对于我的需求来说太小了。我得到了我的雅虎 ID 来开始使用 oauth,但我找不到任何好的例子关于我正在尝试做的事情......

我想在 C# 中使用我的桌面应用程序“登录”,然后继续下载感兴趣的数据。如何使用誓言维度?作为参考,我的背景是使用 html 敏捷包进行简单的屏幕抓取,我从来没有任何使用 Web 服务的经验。任何人都可以让我开始。我现在被困住了(并且整个星期都在这上面)。提前致谢...

4

1 回答 1

4

在这种情况下,您正在访问公共数据(而不是用户私有数据),因此您将使用 OAuth 两腿授权。YDN 网站上的这个页面是不同数据类型的一个很好的起点:私有数据 v 公共数据

两条腿意味着您需要以某种方式(使用您的应用程序密钥和秘密)签署您的请求,但没有用户授权步骤。OAuth 签名通常很棘手,因此大多数人会使用 OAuth 库。

YQL 代码示例页面上有一个很好的演练说明了这一点。向下滚动到“查询公共数据”部分,查看使用签名的两条腿请求调用 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 条腿 OAuth 吗?.

这是另一种可能的解决方案,一个为您执行双腿 OAuth 签名的 Web 服务:OAuth-ify this: 2-legged OAuth service for YQL

于 2012-01-20T21:00:16.717 回答