作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试将此功能添加到我正在开发的 C# Windows 应用程序中,以将图像上传到 Imgur。
很遗憾,它必须是 Imgur,因为该网站是必需的。
问题是我能找到的任何 C# 示例代码都是旧的,而且似乎不能与他们的第 3 版 API 一起使用。
所以我想知道是否有在该领域具有专业知识的人可以帮助我。
我更喜欢使用 OAuth 上传,而不是匿名选项,但如果需要,可以将后者用作示例。
编辑:
我特别不明白的一个部分是,如何在桌面应用程序中完成授权步骤。授权步骤需要打开网页,询问用户是否允许应用程序使用他们的数据。
如何为基于桌面的应用执行此操作?
最佳答案
在开始之前,您需要注册您的应用程序以接收客户端 ID 和客户端密码。我猜你已经意识到了。详细信息可以上官方Imgur API Documentation .
关于身份验证,您是对的,用户必须访问网页并在那里获取并授权您的应用程序。您可以在您的应用程序中嵌入一些 Webbrowser 控件,或者只是指示用户浏览网页。
这里有一些未经测试的代码,只需稍作修改即可使用。
class Program
{
const string ClientId = "abcdef123";
const string ClientSecret = "Secret";
static void Main(string[] args)
{
string Pin = GetPin(ClientId, ClientSecret);
string Tokens = GetToken(ClientId, ClientSecret, Pin);
// Updoad Images or whatever :)
}
public static string GetPin(string clientId, string clientSecret)
{
string OAuthUrlTemplate = "https://api.imgur.com/oauth2/authorize?client_id={0}&response_type={1}&state={2}";
string RequestUrl = String.Format(OAuthUrlTemplate, clientId, "pin", "whatever");
string Pin = String.Empty;
// Promt the user to browse to that URL or show the Webpage in your application
// ...
return Pin;
}
public static ImgurToken GetToken(string clientId, string clientSecret, string pin)
{
string Url = "https://api.imgur.com/oauth2/token/";
string DataTemplate = "client_id={0}&client_secret={1}&grant_type=pin&pin={2}";
string Data = String.Format(DataTemplate, clientId, clientSecret, pin);
using(WebClient Client = new WebClient())
{
string ApiResponse = Client.UploadString(Url, Data);
// Use some random JSON Parser, you´ll get access_token and refresh_token
var Deserializer = new JavaScriptSerializer();
var Response = Deserializer.DeserializeObject(ApiResponse) as Dictionary<string, object>;
return new ImgurToken()
{
AccessToken = Convert.ToString(Response["access_token"]),
RefreshToken = Convert.ToString(Response["refresh_token"])
};
}
}
}
public class ImgurToken
{
public string AccessToken { get; set; }
public string RefreshToken { get; set; }
}
关于c# - Imgur API 版本 3 上传示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16178350/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!