Closed OmmyZhang closed 1 year ago
https://github.com/0xasahi/neogroup/pull/3#discussion_r1107968165 这里有看到相关讨论,但我没太懂 “这样就只能认证 APP_WEBSITE
一个站点了”具体是指什么。按这个用法APP_WEBSITE
是neogroup服务的地址,本来也和认证地址(mastodon站点)无关,这里是用于redirect_uri参数而非oauth2 api的请求地址。
我发现 https://github.com/0xasahi/neogroup/pull/2#issue-1579775698 应该也是和我遇到的一样的问题(redirect_uri
不一致导致oauth2失败)。这个是pleroma的显示问题,只要请求401了都弹个“Invalid Username/Password”。
把数据库删了重建/把这个if里面临时改成app.delete(),然后带环境变量跑: APP_URL=http://127.0.0.1:8000 python manage.py runserver
应该就可以正常授权登陆了。 cc @anig1scur
我发现 #2 (comment) 应该也是和我遇到的一样的问题(
redirect_uri
不一致导致oauth2失败)。这个是pleroma的显示问题,只要请求401了都弹个“Invalid Username/Password”。把数据库删了重建/把这个if里面临时改成app.delete(),然后带环境变量跑:
APP_URL=http://127.0.0.1:8000 python manage.py runserver
应该就可以正常授权登陆了。 cc @anig1scur
照这样本地跑起来了 👏🏻 好开发多了
👍,之前也是把 neodb 的代码直接拿来用了,没仔细研究,感谢PR
OAuth2认证登录流程中用到的
redirect_uri
需要和创建app时的保持一致(准确说是包含),但是目前neogroup中两者是不同的来源。前者来自请求的host
https://github.com/0xasahi/neogroup/blob/b9a63b44748a3fccc1119df1e1082e4b8a9df1bb/mastodon/api.py#L353
https://github.com/0xasahi/neogroup/blob/b9a63b44748a3fccc1119df1e1082e4b8a9df1bb/mastodon/api.py#L377-L379
后者来自settings中的固定值
https://github.com/0xasahi/neogroup/blob/b9a63b44748a3fccc1119df1e1082e4b8a9df1bb/mastodon/api.py#L147
这种不一致增加了不必要的复杂性。我遇到的具体情况是,第一次跑时不知道要带环境变量
APP_URL
,于是登录过程中,创建app时redirect_uris设置成了默认的 https://neogrp.club ,而登录时redirect_uri是基于浏览器中的访问地址( http://neogrp.localhost:8000 ),导致“无效的回调地址”。由于可见的网址中redirect_uri是“正确”的,很难定位问题,最后只有上mastodon的服务器查表才发现原因(mastodon和pleroma的ctl工具都没有提供查看app的功能)。此外,请求中的host头本身也不算很稳定的来源。
我建议统一用settings中配置的地址。