CarGuo/gsy_github_app_flutter

Android Oauth login之后,卡住了

flamelife opened this issue · 8 comments

截屏2024-06-12 11 28 49

出现‘signed in as xxx’,点‘continue’没有反应。

ios版本没有这个问题;
大概一周以前没有这个问题。

+1, 大佬帮看下 @CarGuo

确实,很奇怪,iOS 在最终重定向的时候可以跳过去,android 就不行····

目前已知情况,通过 shouldOverrideUrlLoading 的方式去拦截新的 github picker user 的时候, android 无法正常跳转

👆暂时换个方式解决,还没时间深入探讨下为什么 shouldOverrideUrlLoading 的方式在 android 上有问题

目前简单测试了下,有个奇怪问题,就是单纯用 flutter webview 的 demo 不会出现 continue 的页面,但是 gsy 里会有,有点不理解

实验之后得到一个比较有趣的情况

下面这种,redirect_uri 和注册 oauth app 时相同的时候,会进入 select_account 页面 的 url

'prompt=select_account&redirect_uri=gsygithubapp://authed

下面这种,redirect_uri 和注册 oauth app 时不同的时候,不进入 select_account 页面 的 url

'prompt=select_account&redirect_uri=mygithubpage://authed

下面这种,没有 redirect_uri 和注册 oauth app 时不同的时候

'prompt=select_account'

备注

另外 'prompt=select_account' 其实并没有起到作用,目前看官方 api 行为还是挺怪异,进入 select_account 页面的 url ,在 continue 的时候,flutter 在 android webview 的回调里触发不了注册时的 gsygithubapp://authed

官方的 flutter webview 在 shouldOverrideUrlLoading 的处理上,是将 url 返回到 dart 层判定,触发 loadUrl 再回到 java 层 webview 重新加载,看起来是此时导致的 continue 的 url 进行 302 重定失败,导致一直死循环,无法进入 oauth url

image