imgur загрузить на аутентифицированный API в C # - PullRequest
1 голос
/ 13 марта 2011

Я нашел большое количество примеров C # для загрузки изображений в imgur ... однако все они, похоже, используют анонимный API.Любые мысли SO о том, можно ли адаптировать любой из них для использования аутентифицированного API, и / или какой oAuth API следует использовать для этого без необходимости запуска браузера.

Пример, который я ищуat (есть и другие, если вы ищете «C # IMGUR») здесь: http://api.imgur.com/examples#uploading_cs

, тогда раздел API, в котором говорится о аутентифицированном API , говорит:

Чтобы использовать Authenticated API, первое, что вам нужно сделать, это зарегистрировать приложение и получить ключ и секретный ключ пользователя.Этот ключ и секретная схема используются для протокола аутентификации OAuth 1.0a.

Но неясно, как это подходит при взаимодействии с API с мобильного устройства, такого как WP7.В частности, примеры, показанные в вики OAuth examples для .net, используют браузер, и я хочу, чтобы это приложение без проблем использовало imgur в фоновом режиме ... т.е.Я зарегистрировал учетную запись для своего приложения, чтобы загрузить в нее, так что пользователь не должен быть тем, кто обеспечивает аутентификацию.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 23 марта 2011

Если вам не нужно использовать imgur, тогда я рекомендую попробовать yfrog.

Пример

Извините, что у меня нет времени готовить C # пример, но вот PHP один: ( ссылка на источник )

<?php

    /**
     * This example demonstrates how to use OAuth credentials of your application to upload data to yfrog
     * Usage: upload-to-yfrog-example.php <FILENAME-TO-UPLOAD>
     */

    // TODO: PUT YOUR KEYS HERE

    // your app's OAuth consumer & secret
    define('OAUTH_CONSUMER_KEY', '');
    define('OAUTH_CONSUMER_SECRET', '');

    // your app user's token and secret, when twitter user granted access to your app
    define('OAUTH_TOKEN_KEY', '');
    define('OAUTH_TOKEN_SECRET', '');

    // END OF TODO

    // you can grab required file here:
    // http://github.com/abraham/twitteroauth
    require_once('OAuth.php');

    // instantiating OAuth customer 
    $consumer = new OAuthConsumer(OAUTH_CONSUMER_KEY, OAUTH_CONSUMER_SECRET);
    // instantiating signer
    $sha1_method = new OAuthSignatureMethod_HMAC_SHA1();
    // user's token
    $token = new OAuthConsumer(OAUTH_TOKEN_KEY, OAUTH_TOKEN_SECRET);

    // signing URL
    $url = 'https://twitter.com/account/verify_credentials.xml';
    $request = OAuthRequest::from_consumer_and_token($consumer, $token, 'GET', $url, array());
    $request->sign_request($sha1_method, $consumer, $token);

    $url = $request->to_url();
    // OK, URL is signed, we can pass it to yfrog API

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://yfrog.com/api/upload');

    $post = array
    (
        'username' => 'yfrogtests', // twitter's username
        'verify_url' => $url,  // signed URL
        'media' => '@' . $argv[1], // filename
        'auth' => 'oauth',  // auth=oauth is mandatory to use verify_url method
        'message' => 'see it live on yfrog' // message to be sent, will not be posted to twitter
    );
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_VERBOSE, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

    $response = curl_exec($ch);
    curl_close ($ch);

    echo $response;

    // see http://twitter.com/yfrogtests

?>

Изменить:

Нормальный поток диктует, что приложения отправляют токены запроса oauth / авторизуйтесь в твиттере реализация OAuth Спецификация.

enter image description here

Сколько длится токен доступа?

У нас в настоящее время нет срока действия доступа жетоны. Ваш токен доступа будет недействителен, если пользователь явно отклоняет ваше приложение из их настроек или если администратор Twitter приостанавливает ваш приложение. Если ваша заявка приостановлено будет записка на вашем Страница приложения, сообщающая, что она имеет было приостановлено.

Источник: http://dev.twitter.com/doc

Вам необходимо иметь токен доступа, и чтобы его получить, пользователь должен сначала одобрить вашу заявку - иного пути нет.

Кроме того, количество обращений (запись), которое ваше приложение может иметь на 1 аккаунте, ограничено ~ 300 в день. Поэтому, если ваша программа не предназначена для 1-3 человек, вы будете нарушать этот предел. Мой вывод таков: Пользователь должен быть тем, кто обеспечивает аутентификацию.

0 голосов
/ 23 марта 2011

Когда вы используете Oauth, конечный пользователь должен иметь какую-то учетную запись в imgur.Я только что зарегистрировался, и мне нужно было войти в систему и выбрать поддомен и т. Д. Похоже, что конечные пользователи вашего приложения должны будут сделать то же самое, прежде чем они смогут даже добраться до части Oauth.Пока это не очень отличается от моего другого использования API, которые требуют Oauth.

Как только у пользователя есть учетная запись, ему необходимо эффективно получить делегированный набор учетных данных через Oauth.Для этого необходимо получить URL-адрес авторизации, открыть этот URL-адрес в браузере, чтобы пользователь подтвердил, что они авторизуют ваше приложение, а затем ему будет выдан токен верификатора для входа в клиентское приложение.После выполнения этих шагов клиентское приложение должно иметь все учетные данные Oauth, необходимые для вызова API.

Я думаю, что вы можете избежать шага браузера только в том случае, если у вас есть пользовательские файлы cookie и вы смогливыполнить HTTP-запросы, необходимые для получения и ввода кода верификатора.

...