2Libra oAuth2.0 新增开放 API 更新,现在可以使用开放的 API 写三方程序了

83 条回复
595 次浏览

image

本站的 API 开放啦,任何需要接入的用户均可自发申请三方应用,由于我无法维护那么多端应用产品,且没打算申请商店帐号,所以开放给所有人。

开放 API 后,可以让 2Libra 在更多的平台上被人使用,也可以带来更多更高性能的原生应用体验。oAuth 的授权不会泄漏任何有关用户的隐私字段,密码、通行密钥、两步验证全程只在 2Libra 完成,第三方看不到也拿不到,所以可以放心的授权force_smile。

以下是说明一些有关此次更新的内容。

新增 v1 版本的 API 路由

这个版本的更新,新增公开 API https://2libra.com/api/v1 (80 条路由)+ OAuth 2.0 授权(强制 PKCE)。

oAuth 的权限新增read read:me read:economy write:topic write:comment interact write:economy upload的 scope,涵盖了大部分 2Libra 的 API,足以开发一个相对完善的应用。

UI 的重新设计

本次更新也对授权页进行重做,逐条列出权限、write:economy 单独警示、底部链接到「授权应用」页。

此外设置 → 授权应用 改成 tab 布局,更符合大部分用户的使用体验,如需创建新的 oAuth 应用,可到 https://2libra.com/user/setting/oauth 选择申请 oAuth 应用。

授权的撤销

已授权的应用,你可以随时撤销授权或移除某个权限,操作后下一个请求就会生效,不需要等令牌过期。

开发者接入

开发者可以复制下方信息,直接投喂给 AI 进行快速对接,注意:一些内容需要填写后粘贴给 AI:

复制
请阅读 2Libra 开放 API 接入文档后再动手:
https://r2.2libra.com/openapi/v1/index.md
(index 会告诉你在需要时去读哪一份分册)

我的应用:
- 形态:<有服务端 / iOS / Android / CLI>(四选一)
- client_id:<审核通过后再填>
- redirect_uri:<我在 2Libra 注册的那个回调地址>

硬性要求:
1. 参数名、路径、错误码严格照文档写,不要用通用 OAuth 的常识去推测。
2. 已知反常识点:所有响应(含 /api/oauth/token)都包在 {c,m,d,t} 信封里。
3. 换 Token 时,机密客户端必须同时提供 client_secret 与 PKCE code_verifier;公开客户端仅提供 PKCE code_verifier。
4. client_secret 只放服务端环境变量,不要写进源码,也不要要求我把它粘贴到对话里。
5. 先输出「我需要手动完成的事项清单」(申请应用、注册回调、配置环境变量),等待我确认后再写代码。
6. 最后使用 GET /api/v1/me 做一次连通性验证,并说明如何验证 Refresh Token 轮换。

我的具体需求:
<在这里写你要做的事,例如:做一个能发帖和看通知的网页>

API 后续可能会进行变动,有变动说明时,我会统一在站内通知和邮箱通知将变动内容发送给每一个接入的开发者。

边界与免责说明

  • 第三方应用是独立产品,2Libra 只审核接入申请,不审代码、不担保质量与安全,审核通过不等于官方背书。
  • 金币:授权 write:economy 即视为同意产生金币变动;第三方导致的金币损失用户自担(虚拟物品,不构成法定财产权益);平台可核查但不负赔付义务。同时写明对开发者的约束:扣金币前必须让用户明确确认本次操作与金额,偷偷扣是严重违规。
  • 内容:著作权仍归用户;第三方仅可在保留署名与原文链接的前提下展示,禁止批量存档/镜像/聚合/转售、禁止训练 AI;以用户名义发布的内容视为用户发布。
  • 举报渠道: [email protected] ,另外需要十分注意的是:「2Libra 永远不会向你索要密码、验证码或两步验证代码」。

一些可能的疑问

  • 授权了会泄露密码吗?→ 不会。
  • 撤销授权要改密码吗?→ 不用,也不影响其它设备登录。
  • 撤销后应用还能读我数据吗?→ 下一个请求就失效。
  • 我授权的应用乱扣金币怎么办?→ 撤销 + 邮件举报。
  • 我可以只给一部分权限吗?→ 授权时不行,授权后可以逐项删。
  • 我会被应用看到邮箱吗?→ 不会。

最后

由于这个版本的 API 我没有做很多的线上调研,所以接口很可能会存在不少缺漏,因此有任何关于 oAuth 的问题,希望可以反馈一起进步。

最后再谢谢各位支持 2Libra,没有你们支持也没有现在的内容thanks。希望开放 api 后,可以带来更多更好用户体验的有关 2Libra 的产品,也希望可以留着更多用户和有价值的内容。

❤️9
👍7
🎉1
700
都听我说!

看了一遍文档。
如果做客户端,似乎也不可以使用 2Libra 相关关键字。
如果开发程序整理自己的社区数据,或者是为已授权用户统计他们自己的数据,算违规么?
doge

卡皮巴拉
OP
Admin

给已授权用户统计他自己的数据(余额曲线、签到日历、年度报告)→ 没问题。

把一堆人的数据汇总成榜单对外发布 → 不行。

都听我说!

忽然觉得,官方站的设计给的起点太高了。666
开发好其它的工作量都挺大的。

都听我说!

每个重定向 URI 必须是一个有效的 http 或 https URL
使用类似于 以及原生/桌面端的 com.example.app:/callback 的格式无法提交申请。 @Jimmy

展开 4 条评论
前排打手
GRD

我前一阵还在想新社区的路线问题.

总社区提供 API, 然后分裂出很多特化的新社区, 比如安全社区, 只关注安全频道, 生活社区就只关注生活频道, 发的帖子对应到总社区的对应子模块里.

展开 5 条评论
展开 2 条评论
都听我说!

可以给基于 API 开发的第三方应用/插件/脚本单独开个分区或者 tag 么?

展开 6 条评论
卡皮巴拉
OP
Admin

可以先已读全部,下版本我补充一下单个的参数

/v1/me/notifications/read(整账号全量已读)

展开 2 条评论
都听我说!

桌面端授权之后,页面会一直停留在这。

image

问了一下 AI:
image

展开 1 条评论
都听我说!

原来帖子下面点赞详情,是在接口部分直接没有返回doge_ninja
还以为使用 API 就可以自己实现了呢。

都听我说!

没有获取个人简介详情的接口,只返回了是否填写个人简介。
这个是刻意设计还是待实现的功能?

都听我说!

文档里面要求所有金币操作都需要用户确认,但是没有具体的金币消费金额接口。
比如说发布帖子(动态计费),评论,表情,等各类操作的消费,这些能提供通用的查询接口么?

卡皮巴拉
OP
Admin

授权就当作确认了,各类操作的消费没有单独的接口提供,只有金币流水记录可以查。

都听我说!

可以提供各种限定规则文档么?
比如说发帖选择不同附加组件的前缀切换规则。

都听我说!

第三方应用是否允许基于 API 数据增加 AI 总结的能力?涉及到上传到其它大模型 API。

卡皮巴拉
OP
Admin

不要把 ai 生成内容写入 api 上,可以在自己服务器存储

都听我说!

以动态和通知为例,可以知晓标题、人员和正文。
那能不能把这些数据给 AI,这个 AI 只是在本地提供一个入口,让用户自行配置,然后软件只是做了数据融合 + 指示词 -> 用户配置的 AI -> 返回给用户的数据展示。
大概是这样的思路,我暂时应该不会做自己服务器的能力。

展开 6 条评论
都听我说!

111318 新增反馈:/v1/topics API 发帖必须设置 id,AI 自动分区怎么接入客户端?

卡皮巴拉
OP
Admin

你可以指定节点 id 为:AI_PRE_NODE_ID = "d0629de1-0979-4846-81c6-ff69da66f7ab"

更好的做法是遍历节点列表,找出星云节点的 id 传入到发帖参数,这样就会自动走 AI 挑选节点。

展开 2 条评论

发表一个评论

R保持