Как начать использовать oauth для YQL для исторических данных о запасах? - PullRequest
1 голос
/ 20 января 2012

в моем поиске фида рыночных данных меня привели в YQL для финансирования Yahoo. Это выглядит великолепно и очень просто для публичного использования / запросов, но дневной лимит для публичной версии слишком мал для моих нужд ... Я получил свой Yahoo ID, чтобы начать работу с oauth, но я не могу найти хороших примеров в отношении того, что я пытаюсь сделать ...

Я бы хотел "войти в систему" с помощью моего настольного приложения на C # и продолжить загрузку интересующих данных. Как мне использовать размер присяги? Моя справочная информация - просто скриншот с помощью пакета html agility, у меня никогда не было опыта работы с веб-сервисами. Кто-нибудь может заставить меня начать. Я застрял на данный момент (и был на этой неделе всю неделю). Заранее спасибо ...

1 Ответ

4 голосов
/ 21 января 2012

В этом случае вы обращаетесь к общедоступным данным (в отличие от личных данных пользователя), поэтому вы будете использовать двухстороннюю авторизацию 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 #, но, надеюсь, это даст вам дополнительную информацию о том, что будет необходимо. Я бы искал двухсторонние решения OAuth для C # - на этот вопрос, похоже, есть несколько рабочих ответов: Кто-нибудь реализовал 2 Legged OAuth с использованием DNOA? .

Вот еще одно возможное решение, веб-служба, которая выполняет для вас двухстороннюю подпись OAuth: OAuth-ify this: двухсторонняя служба OAuth для YQL .

...