소셜 웹 로그인 중단·실패를 이메일 오류 대신 소셜 로그인 문구로 안내 · 네트워크 오류 안내 · Android 중단된 웹 로그인 정리 후 재시도

This commit is contained in:
Sn-Kinos
2026-10-10 21:23:15 +09:00
parent 4d2ce67886
commit bc19797158
7 changed files with 219 additions and 25 deletions
+6
View File
@@ -104,3 +104,9 @@ android {
flutter {
source = "../.."
}
dependencies {
// MainActivity 의 「버려진 Firebase 웹 로그인 정리」(kr.co.fanuzu.app/auth) — firebase-auth 가 이미 쓰는
// 라이브러리라 새로 들어오는 것은 없다. 앱 모듈에서 직접 부르려고 컴파일 경로에 올린다.
implementation("androidx.localbroadcastmanager:localbroadcastmanager:1.1.0")
}
@@ -1,5 +1,29 @@
package kr.co.fanuzu.app
import android.content.Intent
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
class MainActivity : FlutterActivity()
class MainActivity : FlutterActivity() {
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
// 버려진 Firebase 웹 로그인(LINE · Apple OIDC) 정리 — Dart `clearStaleWebSignIn`.
// 인가 중 다른 앱(LINE 본인 확인 등)으로 갔다 돌아오면 Firebase 의 대기 작업이 결과 없이 남아,
// 다음 시도가 `web-context-already-presented` 로 막힌다. Firebase 의 인가 화면이 「닫힘」을 알릴 때
// 보내는 것과 같은 취소 신호를 보내 대기 작업을 취소로 끝내고 다음 시도를 연다. 대기 작업이 없으면 아무 일도 없다.
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "kr.co.fanuzu.app/auth")
.setMethodCallHandler { call, result ->
if (call.method != "cancelPendingWebSignIn") {
result.notImplemented()
return@setMethodCallHandler
}
LocalBroadcastManager.getInstance(applicationContext).sendBroadcast(
Intent("com.google.firebase.auth.ACTION_RECEIVE_FIREBASE_AUTH_INTENT")
.putExtra("com.google.firebase.auth.internal.EXTRA_CANCELED", true)
)
result.success(null)
}
}
}