我发现有大量的C#样本上传图片,但是他们似乎都在使用匿名API。任何关于这些是否可以适应使用经过身份验证的API的想法,和/或应该使用oAuth API来执行此操作而无需启动浏览器。
我正在查看的示例(如果您搜索“C#IMGUR”,还有其他示例)在这里:http://api.imgur.com/examples#uploading_cs
然后讨论authenticated API的API部分说明了这一点:
要使用Authenticated API,请使用 你需要做的第一件事就是注册 申请并获得您的 消费者的关键和秘密。这个关键和 秘密方案用于OAuth 1.0a认证协议。
但是,当从WP7等移动设备与API通信时,这种情况并不明显。特别是,OAuth examples wiki .net中显示的示例使用浏览器,我希望此应用程序在后台无缝地使用imgur ...即。我为我的应用程序注册了一个帐户以便上传,因此用户不必是提供身份验证的人。
谢谢!
答案 0 :(得分:0)
当您使用Oauth时,最终用户需要拥有一些imgur帐户。我刚注册,我需要登录并选择一个子域等。看来你的应用程序的最终用户需要做同样的事情才能进入Oauth部分。到目前为止,这与我对需要Oauth的API的其他用法没有太大区别。
用户拥有帐户后,他们需要通过Oauth有效地获取一组委派的凭据。这需要您获取授权URL,在浏览器中打开该URL以供用户确认他们授权您的应用程序,然后他们将获得验证者令牌以输入客户端应用程序。完成这些步骤后,客户端应用程序应具有调用API所需的所有Oauth凭据。
如果您拥有用户的cookie并且能够执行检索和输入验证码所需的HTTP请求,我认为您只能避开浏览器步骤。
答案 1 :(得分:0)
如果不是必需,则需要使用imgur
,我建议您尝试yfrog
。
很抱歉,我没有时间做C#的例子,但这里是PHP 1:(source link)
<?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
?>
修改强>
正常的流量决定了这一点 应用程序发送请求令牌 在Twitter上的oauth / authorize OAuth的实施 说明书
访问令牌持续多长时间?
我们目前没有过期访问权限 令牌。您的访问令牌将是 如果用户明确拒绝,则无效 您的应用程序从他们的设置 或者如果Twitter管理员暂停你的 应用。如果您的申请是 暂停将有一个注意到你的 应用程序页面说它有 被停职了。
您需要拥有访问令牌并获得该权限,用户需要首先批准您的应用程序 - 没有办法解决这个问题。
此外,您的应用程序在1个帐户上可以拥有的(写入)访问次数限制为每天约300次。因此,除非您的程序适用于1-3人,否则您将达到该限制。我的结论是:用户需要提供身份验证的人。