登录时显示client_id未授权 无法登陆
elysia-lilias opened this issue · 7 comments
elysia-lilias commented
KSSnow commented
Mapaler commented
可能确实需要更新客户端id了,等我有空去看看新版本是什么样
Mapaler commented
刚才研究了一下,现在的登录需要进行大改才行。
Mapaler commented
我目前的研究结果如下
错误产生的原因
看更新日志就知道了,看来无法再用老版本的登陆方式了
Version 5.0.234
- Several improvements and bug fixes have been added.
- The option to link with Pawoo has been removed.
- From the beginning of February 2021, you'll have to update your app to the latest version if you're running ver.5.0.219 or earlier.
现在手机版的登录已经改成了从网页使用OAuth登录。
研究心得
- APP 登录 API 的
grant_type
从password
换成了authorization_code
,只要有这个authorization_code
,就可以登录了; - 和网页版用的同一个登录服务,因此也可以在电脑上访问手机 APP 登录用的网页;
- 网页登录有很多层 302 重定向,JS 无权限控制步骤,只能得到最终跳转结果,重定向的最终结果是 APP 私有协议,;
- 这个私有协议里就能得到
authorization_code
,网页上得到的话就能登录,但是 TamperMonkey 也无法正确获取 302 响应头的 location 为私有协议的链接。
解决方案
目前可能实现的方案,是在 Windows 下编写一个程序注册 pxiv 的私有协议,然后浏览器打开 pxiv 的私有协议的时候,就由我自己的程序来截获authorization_code
。
再手动把截获的authorization_code
复制回网页里去登录。
Mapaler commented
我知道大家可能急着用,但是毕竟现在春节期间走亲访友,我要开车,自己也要利用假期休息陪老婆(平时都是上班摸鱼来写的)。
这个工程不小,登录系统得推倒重写,还是等我有空再写吧。
BakaJzon commented
插个眼
Mapaler commented
新的登陆系统已经完成,当然可能存在bug,请大家测试。
同时为了适应国内的环境,把Aria2代理设置也添加到了方案中。