使用最强大的图片上传网站” Imgur.com”(匿名图片上传)的API


什么是伊姆古尔?

imgur是美国图片上传网站。
它不仅在美国而且在日本的某些公告板上都是事实上的顶级图片上传网站。
http://imgur.com/

CBIMG001.jpg

甚至那些说"我从未听说过"的人

我认为很多人经常看到类似

http://i.imgur.com/nDSHVC4.jpg之类的URL。

SNS(Twitter等)已经开发了SNS服务特有的图像上传服务,因此您可能没有做太多事情,但是目前在没有图像上传网站的公告板上非常流行。标准,例如2ch。

这实际上也是imgur并包含在" BB2C"中,它是iOS应用中2ch浏览器的事实上的标准。

在过去的几十年中,日本的图像上传站点尚未确定,关于图像上传站点启动并变成404并最终消失的负面历史一直在重复。

但是,imgur.com很少删除图像,几乎没有404,您可以使用您的帐户集体管理图像,并且还有一个Pro版本,该版本允许无限制地上载图像,每年约20美元。

不幸的是,图像上传站点也是日本,由美国:sob:垄断。

使用Imgur之前的基础知识

使用

imgur上传图像时,将使用以下两种方法之一。

  • 匿名模式上传

  • 帐户上传

在匿名模式下,图像未链接到您的帐户,因此您无法查看或操作以后上传的图像。
使用帐户上传,您可以管理以后批量上传的图像,但是图像上传的数量受到限制(专业版将被取消)。
当然,在帐户模式下需要帐户身份验证。

使用Imgur API

因为它是美国网站,所以REST API已经做好了充分的准备。
https://api.imgur.com/

1.png

官方网站上有指向示例Python,iOS,Android和JavaScript的链接,但是如果您在Google上进行搜索,志愿者还将制作Ruby模块。
由于它是REST API,因此您可以通过理解文档来实现imgur的API,即使是没有模块的次要语言也是如此。

这次,我想从头开始在Ruby中实现API,以了解imgur API。

注册一个Imgur帐户

http://imgur.com/

0.jpg

简写很简单

创建一个应用程序

imgur没有开发人员帐户的概念,因此您可以在创建帐户后立即创建应用程序。
可以创建的应用程序数量似乎没有限制,但是指定了各种速率限制。

2.png

  • 为应用程序名称应用适当的名称:
  • 授权类型:通过帐户验证上传图像时需要。这次,选择底部的"无需用户授权的匿名用法",您无需担心。如果要在一个应用程序中使用匿名模式和帐户模式,请选择"不带Callbak URL的OAuth 2授权"。

  • 应用程序网站:它是可选的,因此您可以将其留空

  • 电子邮件:必填。客户端ID和客户端机密也通过电子邮件

    发送

  • 说明:可选

输入

后,按提交。

获取客户端ID和客户端密钥

3.png

希望此屏幕会出现。

使用imgur API

  • 客户编号:
  • 客户机密:

使用


可以重新发布客户端密钥,但是不能更改客户端ID。
匿名上传图像时,不需要"客户端机密"

4.png

可以管理在帐户设置屏幕上创建的应用程序。
主要重新发出密钥并在身份验证时更改回调URL目标。

实现以匿名模式上传图像的功能

imgur.rb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
require 'httpclient'

# imgur upload simple module
class Imgur

  URL = 'https://api.imgur.com/3/image'

  def initialize(client_id)
    @client_id = client_id
  end

  def anonymous_upload(file_path)
    auth_header = { 'Authorization' => 'Client-ID ' + @client_id }
    upload(auth_header, file_path)
  end

  private

  def upload(auth_header, file_path)
    http_client = HTTPClient.new
    File.open(file_path) do |file|
      body = { 'image' => file }
      @res = http_client.post(URI.parse(URL), body, auth_header)
    end

    result_hash = JSON.load(@res.body)
    p result_hash
    result_hash['data']['link']
  end

end

如果没有httpclient模块,请使用gem install httpclient进行安装。

auth_header = {'授权'=