feat(drivers/123_open): support 123 official app api#2293
Conversation
|
文档可以更新一下 |
Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>
… refresh Keep renewapi parsing for expires_in and map it to internal expiry time handling.
|
该PR需等待 OpenListTeam/OpenList-APIPages#81 合并后方可合并至主分支 |
a31fd53 to
7bea29c
Compare
|
請問為什麼加了新 api 直接把 oauth2 刪了。。。有沒有可能部分使用者有自己的三方應用 @Suyunmeng |
没有删除,原开发者ClientID和ClientSecret登录方式依旧保留的,123对普通开发者的AccessToken获取目前限制为只能通过ClientID和ClientSecret获取,具体请看123官方文档的相关描述,如果您已向123申请到第三方挂载应用的ClientID和ClientSecret,且想使用自己的这个应用进行Oauth2授权来获取RefreshToken和AccessToken注册驱动,可通过自行部署API来实现 |
这算哪门子breaking change... 登录的时候选这个不就行了,能不能看一下页面😅
另外,自己申请的OpenAPI无法通过官方API的刷新,设计如此 |
这个后端除了自己部署 哪里支持传client_id+client_secret+refresh_token了? 4.1.10 很正常的用三方应用刷新 更新到 4.2 直接认证失败了 这还不算 breaking 吗? |
This comment was marked as resolved.
This comment was marked as resolved.
你除非有其他第三方应用的secret,否则都不用refreshtoken这东西了,自己的开发者权益包只用填ClientID和ClientSecret就行了 |
我的第一个回复就说了 我有其他第三方应用的secret。。。
|
|
API平台从来就没有支持过使用三方API+refreshtoken刷新 |
你没有不代表其他人没有 三方应用一直是用 refresh token 的 https://123yunpan.yuque.com/org-wiki-123yunpan-muaork/cr6ced/gammzlhe6k4qtwd9 (编辑时间 2025-03-17) 原来的三种认证方式 这个 PR 之后就只有2能用了😅
|
第一种验证方式在123的2月大变更中已经废除,在文档中我们也只写了第二种认证方式,第三种方式是不稳定的故不会保留,该驱动最初设计时是按个人的OpenAPI规范来写的,并没有考虑到三方应用的规范(因为这完全不包含在预期的用户行为中),在2月大变更后,Oauth2被划分到三方APP,由于当时没有新的方案,所以我们也没有对这个驱动进行变更,直到前段时间我们获取到三方应用的官方授权才开始修改,而按照123文档的描述,我们只保留了文档中含有的个人开发者鉴权方式,然后才引入三方应用到正式驱动的授权中的,你的三方应用接入在之前能使用等于是卡了驱动之前个人和三方oauth2混用的bug,2月份的时候虽然个人Oauth2没了,但三方应用的Oauth2是正常的,所以你才能继续挂载,但现在我们正式引入了官方的三方应用挂载,那之前的驱动逻辑就要按新的123文档重新编写,故引发了你的这个问题 |
感谢解答,请问现在是有新的123的开发者文档了吗?按照之前的文档 个人开发者鉴权 和 三方应用 鉴权只有登录和 token 刷新流程不同,其他都是一样的。
我回退到 4.1.10 后使用 oauth2 的三方应用是正常的(RefreshToken ClientID ClientSecret)由于限流的原因 我从未使用过个人开发者鉴权,一直使用的是 oauth2 的三方鉴权
可以提供一下链接吗👀 |
|
由于这种方式不在预期的设计行为中,所以驱动内直接使用原生的三方应用ClientID+ClientSecret+RefreshToken的刷新方式自然也不会受到保证,这个问题的讨论到此为止,都不用再争执了 |
https://123yunpan.yuque.com/org-wiki-123yunpan-muaork/cr6ced/gn1nai4x0v0ry9ki |
|
文档本身是没有什么变化,但他的实际行为发生了变化,原先个人也可使用Oauth2,所以才有了之前的代码,现在掐掉了自然只能完全按照官方规范来(前面说的新文档可能也有点歧义,抱歉) |
这就是之前的文档啊 😨 这个个人开发者接入从设计之初就是一个有设计缺陷的东西 当时开放平台主要就是为了三方应用服务的 https://123yunpan.yuque.com/org-wiki-123yunpan-muaork/cr6ced/gammzlhe6k4qtwd9 现在把 oauth2 删了 如果过几个月123 把 oplist 的 token 封了 还得改回来不是白搭 而且 oplist 本就是 因为 alist 信任危机的分支,如果现在的设计是只能与 OpenList-APIPages 进行刷新 我认为是不合适的 |
我原先使用的不是个人 oauth2。是和 oplist 现在拿到授权相同类型的 oauth2 所以需要和后端同样的 |
我知道,但情况是原来个人Oauth2这个方式在的时候,都可用这种方式刷新,在代码行为上不会有太大问题 ,但是现在封了,这导致个人和三方应用的token刷新逻辑被割裂了,而我们太久没动这部分代码,也没有对这种情况有预期,所以是直接按照文档来重新改的,这个问题现在团队内争议很大,暂时代码应该是保持现状的了 |
用个人申请的个人 id+secret 一直是走 |
|
这是两位在 123 open 认证逻辑上的第一个 PR,可能对之前的设计不是很清楚。 我觉得这个可以作为参考: #1121 (review)
现在这个 PR 所做的是把2/3直接移动到了后端,并且强制使用 oplist 的 Client ID + Client Secret ;导致原先的可自定义被去除了 |
这个描述我有反而点看不懂了... 1、Client ID + 开发者自己Client Secret:开发者接入——————————这是原先支持的,现在也支持 不应该存在所谓的
所以你的意思是希望:让API站支持功能3吗?通过API+自己的Secre刷新密钥? |
* feat(driver): support 123 official app api * fix(123_open): migrate api refresh to token.go Signed-off-by: MadDogOwner <xiaoran@xrgzs.top> * fix(drivers/123_open): trigger proactive refresh with client credentials * fix(drivers/123_open): use client-credential token endpoint for local refresh Keep renewapi parsing for expires_in and map it to internal expiry time handling. * fix(drivers/123_open): limit proactive refresh to client credentials * fix(drivers/123_open): allow renewapi refresh token proactive init * fix(drivers/123_open): update API address to use renewapi endpoint * fix(drivers/123_open): simplify token refresh parsing * fix(drivers/123_open): unify token expiration to expiredAt --------- Signed-off-by: MadDogOwner <xiaoran@xrgzs.top> Co-authored-by: MadDogOwner <xiaoran@xrgzs.top> Co-authored-by: Suyunmeng <Susus0175@proton.me> Co-authored-by: Suyunjing <suyunmeng@oplist.org.cn>
是指这个功能,而且这个功能一直是 openlist 用户端有实现的(4.2版本前) |

Description / 描述
支持了123云盘提供的OpenList 官方APP API接口
Motivation and Context / 背景
解决#2235
How Has This Been Tested? / 测试
Checklist / 检查清单
我已阅读 CONTRIBUTING 文档。
go fmtor prettier.我已使用
go fmt或 prettier 格式化提交的代码。我已为此 PR 添加了适当的标签(如无权限或需要的标签不存在,请在描述中说明,管理员将后续处理)。
我已在适当情况下使用"Request review"功能请求相关代码作者进行审查。
我已相应更新了相关仓库(若适用)。