Diycode 社区、项目、News、sites 的 API 发布了

使用指南 · jixiaohua · 于 发布 · 最后由 plusend回复 · 3717 次阅读
2

API:
https://www.diycode.cc/api

还有几个月前做的产品原型(访问密码是:diycode):
https://modao.cc/app/rDzsHNxURAnTgtmBuqKAqEg45H9TRjj

产品标注切图:
https://pan.baidu.com/s/1dEFErz7

稍后会把标注和切图放出来。

有任何问题可以在本帖留言,玩耍吧

补充:

1、登录获取 token

POST  http://www.diycode.cc/oauth/token

参入参数: {"client_id"=> 客户端ID, "client_secret"=>客户端secret, "grant_type"=>"password", "password"=>密码, "username"=>"用户名}
返回token 和refresh_token

示例图片, 下面是我调用本地的, 调用线上的就是 http://www.diycode.cc/oauth/token

2、根据token 获取topics 列表

GET http://www.diycode.cc/api/v3/topics.json

Request Header: 添加如下信息:

"Authorization"=>"Bearer " + 刚才获取的token

备注 Bearer 后面有一个 空格

3、退出登录

DELETE http://www.diycode.cc/oauth/authorize

4、大家可以读一下这个文章(https://www.embbnux.com/2016/01/26/ruby_on_rails_use_doorkeeper_for_auth2-0_to_protect_api/), 了解一下Rails 的 oauth2 规范。

共收到 86 条回复
30

深夜回复一发,大赞!

1644
sloop · #2 ·

👍

96
xingstarx · #4 ·

很赞Ψ(`∀´)Ψ造起来

869
siegen · #5 ·

玩起来~

96
jerrychan · #6 ·

支持楼主

96

一起搞起来啊

2
jixiaohua · #8 ·

#7楼 @defaultjia
#6楼 @jerrychan
#5楼 @siegen
#4楼 @xingstarx
#3楼 @unstoppablewow
#2楼 @sloop

如果遇到问题,直接在本帖反馈就可以哈

96

刚好最近想自己做东西 。。

96
dodos · #10 ·

赞!

869
siegen · #11 ·

试了下,在用授权码请求拿token的时候遇到了些问题,这里服务器返回了 301 Moved Permanently

96
456838 · #12 ·

请求必须要走https吗?走http好像不行

3

在这里给大家说明一下 这个api 如何使用: 大家可以参考Ruby版本的Auth2文档

1、建立auth

client_id = '3bddbf23' 
client_secret = '73807fa33f7a022ae1904d38c0371c5fc335222fecf2c5e0db2d43bd3f56ed26'
redirect_uri = 'urn:ietf:wg:oauth:2.0:oob'
site = "http://www.diycode.cc"

client = OAuth2::Client.new(client_id, client_secret, :site => site)
access_token = client.password.get_token(用户名, 密码)

2、获取 topics 列表

access_token.get("http://www.diycode.cc/api/v3/topics.json")
869
siegen · #14 ·

#13楼 @easyhappy 这个最好用 http 请求来说明下,就像微博这样 http://open.weibo.com/wiki/OAuth2/access_tokenhttp://open.weibo.com/wiki/Oauth2/authorize 。从你给的说明来看,Ruby语言本身就把 OAuth2请求封装好了,省去了很多细节,如果用其他语言实现的话,不具备可参考性。

96

app搞起来

528

#11楼 @siegen 之前做的时候也遇到过这个问题,你这个应该是填写的跳转 url 的问题。需要填写正常的https链接地址

528
  • API 页面 最上面几个 OAuth 路径全部是 https 的地址,实际上如果按照 https 去访问会出错 javax.net.ssl.SSLPeerUnverifiedException: Hostname diycode.cc not verified

  • 申请的应用列表页面顶上的主题 logo 没改还是用的 ruby china 的 logo

3

1、登录获取 token

POST  /oauth/authorize

 参入参数: {"client_id"=> 客户端ID, "client_secret"=>客户端secret, "grant_type"=>"password", "password"=>密码, "username"=>"用户名}

返回token 和refresh_token

2、根据token 获取topics 列表

GET /api/v3/topics.json

Request Header:  添加如下信息:

"Authorization"=>"Bearer " + 刚才获取的token

3、退出登录

DELETE /oauth/authorize

4、大家可以读一下这个文章(https://www.embbnux.com/2016/01/26/ruby_on_rails_use_doorkeeper_for_auth2-0_to_protect_api/), 了解一下Rails 的 oauth2 规范。

@siegen @jerrychan @456838 @sloop @unstoppablewow @xingstarx 剩下的 就需要靠你们 研究了。

96

能不能给菜鸟讲一下怎么通过app认证

96
plusend · #20 ·

大赞

96
plusend · #21 ·

期待标注和切图

2

#21楼 @plusend 标注和切图已经更新上去了

96
plusend · #23 ·

#22楼 @jixiaohua 多谢啦。赞赞

96

我用postman也无法走完这个流程,不知道是不是这个oauth2.0搭建的问题。

96
456838 · #25 ·

Java走的流程会提示这个错误:
failed to connect to diycode.cc/123.59.131.251 (port 443): connect failed: ECONNREFUSED (Connection refused)

26楼 Deleted
1048


我看着网上的流程走的,这样不对吗?

3

1、登录获取 token

POST  http://www.diycode.cc/oauth/authorize

参入参数: {"client_id"=> 客户端ID, "client_secret"=>客户端secret, "grant_type"=>"password", "password"=>密码, "username"=>"用户名}
返回token 和refresh_token

2、根据token 获取topics 列表

GET http://www.diycode.cc/api/v3/topics.json

Request Header: 添加如下信息:

"Authorization"=>"Bearer " + 刚才获取的token
3、退出登录

DELETE http://www.diycode.cc/oauth/authorize

4、大家可以读一下这个文章(https://www.embbnux.com/2016/01/26/ruby_on_rails_use_doorkeeper_for_auth2-0_to_protect_api/), 了解一下Rails 的 oauth2 规范。

@light_star 剩下的 就需要靠你们 研究了。

1048

#28楼 @easyhappy 貌似大部分的android程序猿都不会ruby吧,这个有点难度,开放api用起来还那么费劲不利于推广啊

3

#29楼 @light_star 我28楼 给的不是 ruby 格式的, 任何程序员 都会http 请求吧

2981

@easyhappy 调用 http://www.diycode.cc/oauth/authorize 得到下面提示
The change you wanted was rejected.
Maybe you tried to change something you didn't have access to.

1048

@easyhappy

貌似还是不行

3

@light_star@samuelgjk
我更新了 帖子的内容,帖子里面有一个图片, 你按照图片 就可以了

2981

#33楼 @easyhappy 可以了,谢谢

1048

#33楼 @easyhappy 终于可以了,谢谢

96

给大伙提个醒,少走点弯路
"Authorization">"Bearer " + 刚才获取的token

bearer后面有一个空格不能删,测试半天才发现问题

96
wenen · #37 ·

#36楼 @xiseven 天啊撸 多亏你了 我每次都删了 每次都认证失败....

96
wenen · #38 ·

#36楼 @xiseven 还是会有 Internal Server Error诶

96
xiseven · #39 ·

#38楼 @wenen 那一个api啊 说来我试试 我是用postman测的 还没有写代码

96
456838 · #40 ·

96
456838 · #41 ·

node_id参数导致的错误

42楼 Deleted
96
wenen · #43 ·

#39楼 @xiseven /topics/:id/favorite.json

96
xiseven · #44 ·

#43楼 @wenen 测试确实有问题,api有些是有问题的,楼上也有反映,只能等官方修复了

96
456838 · #45 ·

麻烦楼主帮忙看看是什么原因导致的失败?
我检查过请求是没有问题的。

3

#40楼 @456838 已修复, 谢谢反馈

3

#43楼 @wenen 我测试了 没有问题
比如 你想对 id 为16的帖子点赞

post /api/v3/topics/16/favorite.json

就可以了

3

#45楼 @456838

我测试了 没有问题

96
wenen · #50 ·

#48楼 @easyhappy 我昨天用Postman测试 确实如你所说 是正常的。但是java就是走不通,我今天用火狐的HttpRequest测试 也是走不通的,

关于参数问题, 这里的id ,我传的是/topics.json返回的, 比如说这个:
/**
* id : 427
* title : Diycode 代码艺术技术沙龙 | 广州站小结 (视频 PPT 都有了)
**/
request header 就是按照你上面的格式给出来的:
Bearer 5d0afa3a17d5b805a7ebc0bb00557450f816c0b83a9c174f6313def8eb7c2883

96
wenen · #51 ·

#47楼 @easyhappy 这是Postman的结果,也不行了:

58

不错,一直在关注API是否会更新,现在可以做一个丰富的客户端了

96
troy · #53 ·

可以弄个客户端玩玩了

1048

那个切图貌似不全啊 ,忘记密码的页面呢?按钮不要点击状态吗?

96
456838 · #55 ·

#48楼 @easyhappy 麻烦试试DELETE方法。POST是没有问题。

96

给大家提一个醒,API文档中的 : URL 基本路径:http://diycode.cc/api/v3

需要改成 http://www.diycode.cc/api/v3

不然很多的POST类请求是会报错的

96
wenen · #57 ·

#48楼 @easyhappy
POST /topics.json 这个api需要传递一个node_id过去,希望能够提供完整的node_id与node_name的数据。
目前有一个API GET /nodes.json 似乎是返回所有 nodes的 但是没有介绍文字,而且似乎也是无法访问,返回404

58楼 Deleted
96
wenen · #59 ·

POST /topics/:id/unfavorite.json
取消收藏话题

An unhandled lowlevel error occurred. The application logs may have details.
500 Internal Server Error

96
wenen · #60 ·

#59楼 @wenen 客户端测试的时候收藏了一大堆,结果取消不了,好尴尬

96
plusend · #61 ·


这些值存在哪里啊?@jixiaohua

648

api页里面api路由源代码链接失效了

648

#56楼 @wenen 谢谢,刚被这个错误路径搞惨了

64楼 Deleted
1205
mzhua · #65 ·

GET /users/:login/favorites.json

这个接口是要怎么调啊

3

#65楼 @mzhua

/users/:login/favorites.json

:login(就是用户名) 的含义 就是 比如你想获取 用户 mzhua的 favorites, 相对路径 就是如下:

/users/mzhua/favorites.json

96
plusend · #67 ·

@easyhappy 怎么获取当前登录者对于某个 topic 是否关注,是否收藏的状态?

1205
mzhua · #68 ·

#66楼 @easyhappy 感激涕零👍

2

#69楼 @plusend nice,我去试试看

96
lzxb · #71 ·

有机会可以拿来练手了

72楼 Deleted
73楼 Deleted
74楼 Deleted
96
plusend · #75 ·

#33楼 @easyhappy DELETE https://www.diycode.cc/oauth/authorize 这个调用返回结果是
The change you wanted was rejected.
Maybe you tried to change something you didn't have access to.
是哪里出问题了么?

3396
sendtion · #76 ·

news分页查询怎么传递参数?

96

#69楼 @plusend
更新了一个版本,新的版本提高了完成度,有兴趣的可以取下来试试。
下载地址
源码

3460 1482113654

#75楼 @plusend#76楼 @sendtion 你可以 惨遭 #77楼的 写法

96
mutou · #79 ·

@plusend 我打算写个这种社区的APP做毕业设计,以后求大神多多指教。

2

#79楼 @mutou 期待你的作品

96
mutou · #81 ·

@jixiaohua 我会努力的!

96
plusend · #82 ·

#80楼 @jixiaohua 获去某个 Topic 的详情时,缺少是否关注、收藏等状态的值。
下面是我用 ruby-china 试的时候,返回的结果中会有如下几个字段,而 DiyCode 是没有的。

帮忙看下吧?

96
xiaolu · #83 ·

#77楼 @plusend 下载app安装时报错。解析程序包时出现问题。

96
plusend · #84 ·

#83楼 @xiaolu 换了个下载地址:http://fir.im/ul58

96
xiaolu · #85 ·

#84楼 @plusend 就是在这个网站下的,是在安装APP时报的错。

96
plusend · #86 ·

#85楼 @xiaolu 你手机不是 Android 5.0 或以上的吧?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册