gpt4 book ai didi

c# - Imgur API 版本 3 上传示例?

转载 作者:太空狗 更新时间:2023-10-30 00:53:30 24 4
gpt4 key购买 nike

我正在尝试将此功能添加到我正在开发的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com