精华 CNode社区第三方图片上传API,用来解决客户端图片上传问题
发布于 1天前 作者 TakWolf 104 次浏览 来自 分享

CNode社区第三方图片上传API,用来解决官方API未提供图片上传接口的问题。

接口主要提供给CNode社区的各种客户端调用

这个服务大概会持久运行,直到官方提供图片上传接口,或者我破产了为止…(:з」∠)

目前架构为:Jersey(Java),使用七牛云存储,部署在Coding.net演示程序,没有数据库

功能很简单,只有一个接口,实现的也很粗糙

(没使用Node实现真是抱歉了,一个只会写点Java的菜B。Node还在学习,目前还弄不出东西,轻喷…)

七牛使用的是标准用户的免费配额(储存空间10GB;每月Put请求10万次;每月下载流量10GB;每月Get请求100万次),按照目前的CNode流量应该足够用了(反正老大 @alsotang 说不够的话他能拉赞助)

文档

接口地址为:http://cnode-api.takwolf.com

可以参考的一个客户端调用范例为:CNodeMD

Home页面提供一个测试工具,方便在浏览器下测试

接口只有一个:

post /images 上传一个图片

接收 post 参数,要求 content-Type 为 multipart/form-data

  • accesstoken String 用户的 accessToken

  • file File 图片文件

返回,需要指定 Accept 为 application/json 或者 application/xml

成功:

{
  "success": true,
  "image_url": "http://someurl" // 该地址为图片的直接地址
}

失败:

{
  "success": false,
  "error_msg": "some message"
}

!!注意!!

该部分请务必注意!!

该接口是一个第三方图片上传接口,目前没有获得官方认证,而该接口调用需要传递CNode用户的accessToken,这是一个非常危险的行为。

向第三方泄露accessToken,意味着第三方有能力获取用户权限(发帖和回复),如果第三方不可信,后果是非常严重的。

该项目代码托管在Github上,部署在coding.net,没有数据库连接逻辑,以此来避嫌。

coding.net的部署项目是私有的,因为涉及七牛密钥的配置(gitignore),目前还没有找到一个方法来私有一个分支

想到的办法是希望CNode的管理成员可以加入coding的项目组中负责监管。

客户端调用注意

客户端实现在调用该接口的时候,请务必明确的给出提示例如对话框,让用户知道图片接口使用第三方,并且让用户有权选择是否使用这个服务

希望官方可以尽早开放图片上传接口,从根本上解决这个问题

关于accessToken的问题,可以参考这个这个issues:用户的accessToken有效期是多少

当你觉得accessToken有泄露风险的时候,请务必通过有效的手动,让当前的accessToken失效。

更多我没有考虑到的问题,请创建issue

13 回复

@alsotang 目前图片问题是这么搞的,客户端还没实现,确认一下会不会有问题

@TakWolf 没问题啊,我以为你会用这个来解决的:https://github.com/qiniu/android-sdk

@TakWolf Image 最好找个可信的第三方,通过token验证

来自炫酷的 CNodeMD

七牛有前端实现,不用先传到自己服务器。

@hezedu 在前端上传是一种不安全的模式

无论怎样用户必须要有认证

这样做的另一个目的是未来官方开启图片接口后可以无成本迁移

来自炫酷的 CNodeMD

@472404420 除了官方提供接口,任何人都无法成为可信第三方

来自炫酷的 CNodeMD

@alsotang 前端模式觉得还是不安全

来自炫酷的 CNodeMD

@TakWolf 抛开剂量谈毒性,和抛开后果谈安全,都是耍流氓的表现…

@TakWolf 至少不用传CNode用户的accessToken了

@alsotang 我感觉token给第三方也没啥

来自炫酷的 CNodeMD

@472404420 楼主做了这么个接口还是蛮不错的

@alsotang 为啥官方不提供接口呢,感觉楼主好造业

来自炫酷的 CNodeMD

回到顶部