add manual continue button for SSO login flow
This commit is contained in:
@@ -582,6 +582,7 @@ class MainActivity : Activity() {
|
|||||||
setBackgroundColor(COLOR_BACKGROUND)
|
setBackgroundColor(COLOR_BACKGROUND)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ── 顶部:取消按钮 ──
|
||||||
container.addView(Button(this).apply {
|
container.addView(Button(this).apply {
|
||||||
text = "取消登录"
|
text = "取消登录"
|
||||||
setOnClickListener {
|
setOnClickListener {
|
||||||
@@ -592,19 +593,11 @@ class MainActivity : Activity() {
|
|||||||
layoutParams = LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 44.dp)
|
layoutParams = LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 44.dp)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// ── 中间:WebView ──
|
||||||
ssoWebView = WebView(this).apply {
|
ssoWebView = WebView(this).apply {
|
||||||
settings.javaScriptEnabled = true
|
settings.javaScriptEnabled = true
|
||||||
settings.domStorageEnabled = true
|
settings.domStorageEnabled = true
|
||||||
webViewClient = object : WebViewClient() {
|
webViewClient = object : WebViewClient() {
|
||||||
override fun onPageFinished(view: WebView?, url: String?) {
|
|
||||||
super.onPageFinished(view, url)
|
|
||||||
if (ssoPhase == 0 && url != null && !url.contains("/login")) {
|
|
||||||
// 用户已登录(离开了登录页),现在加载授权页
|
|
||||||
ssoPhase = 1
|
|
||||||
view?.post { view.loadUrl(authorizeUrl) }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
|
override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
|
||||||
val url = request?.url ?: return false
|
val url = request?.url ?: return false
|
||||||
if (ssoPhase >= 1 && url.toString().startsWith(SSO_REDIRECT_URI)) {
|
if (ssoPhase >= 1 && url.toString().startsWith(SSO_REDIRECT_URI)) {
|
||||||
@@ -621,6 +614,18 @@ class MainActivity : Activity() {
|
|||||||
container.addView(ssoWebView, LinearLayout.LayoutParams(
|
container.addView(ssoWebView, LinearLayout.LayoutParams(
|
||||||
ViewGroup.LayoutParams.MATCH_PARENT, 0, 1f
|
ViewGroup.LayoutParams.MATCH_PARENT, 0, 1f
|
||||||
))
|
))
|
||||||
|
|
||||||
|
// ── 底部:登录完成后手动点继续 ──
|
||||||
|
container.addView(Button(this).apply {
|
||||||
|
text = "已登录,点击继续授权"
|
||||||
|
background = rounded(COLOR_ACCENT, 8f)
|
||||||
|
setTextColor(Color.WHITE)
|
||||||
|
setOnClickListener {
|
||||||
|
ssoPhase = 1
|
||||||
|
ssoWebView?.loadUrl(authorizeUrl)
|
||||||
|
}
|
||||||
|
layoutParams = LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 48.dp).withMargins(8.dp, 8.dp, 8.dp, 8.dp)
|
||||||
|
})
|
||||||
return container
|
return container
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user