microg / GmsCore

Free implementation of Play Services
https://microg.org
Apache License 2.0
8.37k stars 1.7k forks source link

Targeting Firebase Auth #1198

Closed GRBurst closed 2 years ago

GRBurst commented 4 years ago

Hey there,

I use microG for many years now and still love it :heart:

Sadly, for me, the missing firebase auth feature / support is a huge pain. Therefore, I decided to investigate this issue and will spend some time on it. In order to do so, I appreciate some help. I am familiar with android, building android roms and android apps, but I am not familiar with the internal of microG.

As a result, I have some questions / requests:

Furthermore, I suggest making this a collecive issue for all firebase auth related problems.

Here are some references that may be connected to a firebase auth issue (some already have the Firebase Auth tag):

756

809

842

951

1013

1162

Looking forward to hear from you!

Romern commented 4 years ago

A major part of getting it to work in most apps is the "X-Goog-Spatula" header, which is used for obtaining the firebase auth tokens in some apps, which requires DroidGuard, so some proprietary parts would be required for the implementation. I don't know if DroidGuard is currently working, but that would have to be considered. Some of my notes on it are here (its a few months old), including some python code for using the Tier app, which requires the Spatula header: https://gist.github.com/Romern/e58e634e4d70b2be5b57d7abdb77f7ef Maybe it helps a bit

GRBurst commented 4 years ago

Thanks @Romern , this is definitive a starting point 👍

most apps

Can you elaborate on this? Do you know what other apps are using? Maybe I can find it in an official Firebase Auth documentation.

Furthermore, I only have a rough picture how the communication between micorG and DroidGuard works, so I guess I have to look that up, too.

Romern commented 4 years ago

Sorry, this was more of an assumption that most apps use it. I saw it in the Tier app and I remember checking out some other apps using authentication using PhoneAuthProvider. It may be a start to setup the sample app ( https://github.com/firebase/quickstart-android/tree/master/auth ) and record the traffic for the various authentication methods. The header itself is undocumented, I was not able to find it in any (un-)official documentation.

GRBurst commented 4 years ago

Same here, could not find any documentation about the header in my today's research :-(

Romern commented 4 years ago

Ok, I tried some of the Authentication methods (GoogleSignInActivity, EmalPasswordActivity, PhoneAuthActivity, AnonymousAuthActivity) and edited the requests with Charles to not include the Spatula header, and only PhoneAuthActivity threw an MISSING_CLIENT_IDENTIFIER error and didn't work. So for a start most authentication methods could be implemented, without the need for the Spatula header.

mar-v-in commented 4 years ago

Yes, that matches my observation that at least most of Firebase Auth should work fine without any special headers. Firebase Auth is based on the Google Identity Toolkit RelyingParty API which has partially public API description and open source client libraries. I'm actually in the process of implementing Firebase Auth these days.

GRBurst commented 4 years ago

I'm actually in the process of implementing Firebase Auth these days.

I will gladly support you wherever I can @mar-v-in . Please feel free to reach out. I still suggest to make a quick call to align ourselves ;-)

GRBurst commented 4 years ago

[...] only PhoneAuthActivity threw an MISSING_CLIENT_IDENTIFIER error and didn't work [...]

I saw that in my logs yesterday, too. I am looking into this in more detail with regard to @mar-v-in information right now.

Romern commented 4 years ago

Instead of using the Android PhoneAuth using the Spatula header, you can use the web/js-API with recaptcha, as the phone authentication in the firebase dev console can only be enabled for all platforms: https://firebase.google.com/docs/auth/web/phone-auth . This works flawlessly with the Tier app (I used this https://github.com/firebase/quickstart-js/tree/master/auth and changed the init.js using local overrides in chromium).

mar-v-in commented 3 years ago

Initial support for Firebase Auth has landed in c3bfb63f27c116d21ba7b2b87629e36573d4a59e It currently supports

Joecowboy commented 3 years ago

Google Voice Fails to log into during setup with current apk installer and once setup Network Authentication Error connect to Google VOIP server. 1146#issuecomment-720913907

Romern commented 3 years ago

It appears that Tier has blocked the method, web-api atuhentication now throws the error:

{
  "error": {
    "code": 403,
    "message": "Requests from this Android client application \u003cempty\u003e are blocked.",
    "errors": [
      {
        "message": "Requests from this Android client application \u003cempty\u003e are blocked.",
        "domain": "global",
        "reason": "forbidden"
      }
    ],
    "status": "PERMISSION_DENIED"
  }
}

and the app does not work anymore (visible and invisible captcha). The pop flow gets past the request for the captcha, but the sms code is not sent.

EDIT: My own Firebase app still works, so it seems to be a single instance where they banned it.

Romern commented 3 years ago

Apparently the pop flow not working the last time I tried was just a fluke, it seems to work fine now. However this seems like a workaround and if they can just block the different methods the longevity of it seems to be a problem.

syntech16 commented 3 years ago

Yuka is crashing when I click the "Sign in with email" button. (Facebook button is not crashing)

Using a phone with GApps: if I go to the login screen and press the email button, the following activity appears, showing the pop-up with the email.

com.firebase.ui.auth.ui.email.EmailActivity seems to be loading correctly.

I/FIAM.Headless: went foreground
I/FIAM.Display: Binding to activity: Main.RootActivity
I/FIAM.Headless: Setting display event component
W/AnalyticsUserIDStore: initStore should have been called before calling setUserID
W/UserDataStore: initStore should have been called before calling setUserID
I/FIAM.Headless: Forcing fetch from service rather than cache. Test Device: false | App Fresh Install: true
I/FA: Tag Manager is not found and thus will not be used
I/System: Loaded time zone names for "es_ES" in 72ms (62ms in ICU)
I/FIAM.Headless: Starting InAppMessaging runtime with Installation ID f0a6nE9XSuuNmDK2UyC6VV
I/FIAM.Display: Unbinding from activity: Main.RootActivity
I/FIAM.Headless: Removing display event component
I/FIAM.Headless: Fetching campaigns from service.
W/DynamiteModule: Local module descriptor class for providerinstaller not found.
I/DynamiteModule: Considering local module providerinstaller:0 and remote module providerinstaller:0
W/ProviderInstaller: Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0.
I/FIAM.Display: Binding to activity: com.firebase.ui.auth.KickoffActivity
I/FIAM.Headless: Setting display event component
V/NativeCrypto: Registering com/google/android/gms/org/conscrypt/NativeCrypto's 288 native methods...
I/FIAM.Display: Unbinding from activity: com.firebase.ui.auth.KickoffActivity
I/FIAM.Headless: Removing display event component
I/FIAM.Display: Binding to activity: com.firebase.ui.auth.ui.idp.AuthMethodPickerActivity
I/FIAM.Headless: Setting display event component
I/ProviderInstaller: Installed default security provider GmsCore_OpenSSL
I/FIAM.Headless: Successfully fetched 0 messages from backend
I/FIAM.Display: Unbinding from activity: com.firebase.ui.auth.ui.idp.AuthMethodPickerActivity
I/FIAM.Headless: Removing display event component
I/FIAM.Display: Binding to activity: com.firebase.ui.auth.ui.email.EmailActivity
I/FIAM.Headless: Setting display event component
I/FIAM.Display: Unbinding from activity: com.firebase.ui.auth.ui.email.EmailActivity
I/FIAM.Headless: Removing display event component

If I try the same thing on another phone with microG 0.2.14.204215, the app crashes as soon as I press the email button.

No com.firebase.ui.auth.ui.email.EmailActivity appears in the logs.

I/FIAM.Headless: went foreground
I/FIAM.Display: Binding to activity: Main.RootActivity
I/FIAM.Headless: Setting display event component
I/FIAM.Headless: Forcing fetch from service rather than cache. Test Device: false | App Fresh Install: true
I/FA: Tag Manager is not found and thus will not be used
I/FIAM.Headless: Starting InAppMessaging runtime with Installation ID epC9IAAuQc6p9-s1usji2q
I/FIAM.Display: Unbinding from activity: Main.RootActivity
I/FIAM.Headless: Removing display event component
I/FIAM.Headless: Fetching campaigns from service.
W/DynamiteModule: Local module descriptor class for providerinstaller not found.
W/DynamiteModule: IDynamite loader version < 2, falling back to getModuleVersion2
D/GmsDynamiteLoaderImpl: unimplemented Method: getModuleVersion for providerinstaller
I/DynamiteModule: Considering local module providerinstaller:0 and remote module providerinstaller:0
W/ProviderInstaller: Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0.
D/GmsProviderInstaller: Initializing provider for io.yuka.android
V/NativeCrypto: Registering com/google/android/gms/org/conscrypt/NativeCrypto's 288 native methods...
D/GmsProviderInstaller: Installed default security provider GmsCore_OpenSSL
I/FIAM.Display: Binding to activity: com.firebase.ui.auth.KickoffActivity
I/FIAM.Headless: Setting display event component
I/FIAM.Display: Unbinding from activity: com.firebase.ui.auth.KickoffActivity
I/FIAM.Headless: Removing display event component
I/BiChannelGoogleApi: [FirebaseAuth: ] getGoogleApiForMethod() returned Gms: com.google.firebase.auth.api.a.d@75adc3
I/FIAM.Display: Binding to activity: com.firebase.ui.auth.ui.idp.AuthMethodPickerActivity
I/FIAM.Headless: Setting display event component
I/FIAM.Headless: Successfully fetched 0 messages from backend
I/FIAM.Display: Unbinding from activity: com.firebase.ui.auth.ui.idp.AuthMethodPickerActivity
I/FIAM.Headless: Removing display event component
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: io.yuka.android, PID: 22158
    android.content.ActivityNotFoundException: No Activity found to handle null
        at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2067)
        at android.app.Activity.startIntentSenderForResultInner(Activity.java:5583)
        at android.app.Activity.startIntentSenderForResult(Activity.java:5549)
        at androidx.fragment.app.d.startIntentSenderForResult(FragmentActivity.java:6)
        at androidx.core.app.a.x(ActivityCompat.java:2)
        at androidx.fragment.app.d.startIntentSenderFromFragment(FragmentActivity.java:6)
        at androidx.fragment.app.d$a.q(FragmentActivity.java:1)
        at androidx.fragment.app.Fragment.startIntentSenderForResult(Fragment.java:2)
        at com.firebase.ui.auth.util.ui.FlowUtils.startIntentSenderForResult(FlowUtils.java:5)
        at com.firebase.ui.auth.util.ui.FlowUtils.unhandled(FlowUtils.java:12)
        at com.firebase.ui.auth.viewmodel.ResourceObserver.onChanged(ResourceObserver.java:12)
        at com.firebase.ui.auth.viewmodel.ResourceObserver.onChanged(ResourceObserver.java:1)
        at androidx.lifecycle.LiveData.c(LiveData.java:6)
        at androidx.lifecycle.LiveData.d(LiveData.java:5)
        at androidx.lifecycle.LiveData$c.e(LiveData.java:10)
        at androidx.lifecycle.LiveData$LifecycleBoundObserver.c(LiveData.java:3)
        at androidx.lifecycle.k$b.a(LifecycleRegistry.java:3)
        at androidx.lifecycle.k.g(LifecycleRegistry.java:9)
        at androidx.lifecycle.k.q(LifecycleRegistry.java:9)
        at androidx.lifecycle.k.m(LifecycleRegistry.java:5)
        at androidx.lifecycle.k.i(LifecycleRegistry.java:2)
        at androidx.fragment.app.Fragment.performStart(Fragment.java:7)
        at androidx.fragment.app.j.T0(FragmentManagerImpl.java:87)
        at androidx.fragment.app.j.Q0(FragmentManagerImpl.java:9)
        at androidx.fragment.app.j.R0(FragmentManagerImpl.java:7)
        at androidx.fragment.app.j.g0(FragmentManagerImpl.java:2)
        at androidx.fragment.app.j.f0(FragmentManagerImpl.java:3)
        at androidx.fragment.app.f.q(FragmentController.java:1)
        at androidx.fragment.app.d.onStart(FragmentActivity.java:9)
        at androidx.appcompat.app.d.onStart(AppCompatActivity.java:1)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1435)
        at android.app.Activity.performStart(Activity.java:8024)
        at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3475)
        at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
        at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7657)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:594)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
E/UncaughtException: android.content.ActivityNotFoundException: No Activity found to handle null
        at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2067)
        at android.app.Activity.startIntentSenderForResultInner(Activity.java:5583)
        at android.app.Activity.startIntentSenderForResult(Activity.java:5549)
        at androidx.fragment.app.d.startIntentSenderForResult(FragmentActivity.java:6)
        at androidx.core.app.a.x(ActivityCompat.java:2)
        at androidx.fragment.app.d.startIntentSenderFromFragment(FragmentActivity.java:6)
        at androidx.fragment.app.d$a.q(FragmentActivity.java:1)
        at androidx.fragment.app.Fragment.startIntentSenderForResult(Fragment.java:2)
        at com.firebase.ui.auth.util.ui.FlowUtils.startIntentSenderForResult(FlowUtils.java:5)
        at com.firebase.ui.auth.util.ui.FlowUtils.unhandled(FlowUtils.java:12)
        at com.firebase.ui.auth.viewmodel.ResourceObserver.onChanged(ResourceObserver.java:12)
        at com.firebase.ui.auth.viewmodel.ResourceObserver.onChanged(ResourceObserver.java:1)
        at androidx.lifecycle.LiveData.c(LiveData.java:6)
        at androidx.lifecycle.LiveData.d(LiveData.java:5)
        at androidx.lifecycle.LiveData$c.e(LiveData.java:10)
        at androidx.lifecycle.LiveData$LifecycleBoundObserver.c(LiveData.java:3)
        at androidx.lifecycle.k$b.a(LifecycleRegistry.java:3)
        at androidx.lifecycle.k.g(LifecycleRegistry.java:9)
        at androidx.lifecycle.k.q(LifecycleRegistry.java:9)
        at androidx.lifecycle.k.m(LifecycleRegistry.java:5)
        at androidx.lifecycle.k.i(LifecycleRegistry.java:2)
        at androidx.fragment.app.Fragment.performStart(Fragment.java:7)
        at androidx.fragment.app.j.T0(FragmentManagerImpl.java:87)
        at androidx.fragment.app.j.Q0(FragmentManagerImpl.java:9)
        at androidx.fragment.app.j.R0(FragmentManagerImpl.java:7)
        at androidx.fragment.app.j.g0(FragmentManagerImpl.java:2)
        at androidx.fragment.app.j.f0(FragmentManagerImpl.java:3)
        at androidx.fragment.app.f.q(FragmentController.java:1)
        at androidx.fragment.app.d.onStart(FragmentActivity.java:9)
        at androidx.appcompat.app.d.onStart(AppCompatActivity.java:1)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1435)
        at android.app.Activity.performStart(Activity.java:8024)
        at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3475)
        at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
        at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7657)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:594)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

I've cleaned the logs taking out the lines that I supposed were not relevant. If you need the full logs or if you want me to try something else, I'll be glad to help.

michael1900 commented 3 years ago

Yuka is crashing when I click the "Sign in with email" button. (Facebook button is not crashing)

Using a phone with GApps: if I go to the login screen and press the email button, the following activity appears, showing the pop-up with the email.

com.firebase.ui.auth.ui.email.EmailActivity seems to be loading correctly.

I/FIAM.Headless: went foreground
I/FIAM.Display: Binding to activity: Main.RootActivity
I/FIAM.Headless: Setting display event component
W/AnalyticsUserIDStore: initStore should have been called before calling setUserID
W/UserDataStore: initStore should have been called before calling setUserID
I/FIAM.Headless: Forcing fetch from service rather than cache. Test Device: false | App Fresh Install: true
I/FA: Tag Manager is not found and thus will not be used
I/System: Loaded time zone names for "es_ES" in 72ms (62ms in ICU)
I/FIAM.Headless: Starting InAppMessaging runtime with Installation ID f0a6nE9XSuuNmDK2UyC6VV
I/FIAM.Display: Unbinding from activity: Main.RootActivity
I/FIAM.Headless: Removing display event component
I/FIAM.Headless: Fetching campaigns from service.
W/DynamiteModule: Local module descriptor class for providerinstaller not found.
I/DynamiteModule: Considering local module providerinstaller:0 and remote module providerinstaller:0
W/ProviderInstaller: Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0.
I/FIAM.Display: Binding to activity: com.firebase.ui.auth.KickoffActivity
I/FIAM.Headless: Setting display event component
V/NativeCrypto: Registering com/google/android/gms/org/conscrypt/NativeCrypto's 288 native methods...
I/FIAM.Display: Unbinding from activity: com.firebase.ui.auth.KickoffActivity
I/FIAM.Headless: Removing display event component
I/FIAM.Display: Binding to activity: com.firebase.ui.auth.ui.idp.AuthMethodPickerActivity
I/FIAM.Headless: Setting display event component
I/ProviderInstaller: Installed default security provider GmsCore_OpenSSL
I/FIAM.Headless: Successfully fetched 0 messages from backend
I/FIAM.Display: Unbinding from activity: com.firebase.ui.auth.ui.idp.AuthMethodPickerActivity
I/FIAM.Headless: Removing display event component
I/FIAM.Display: Binding to activity: com.firebase.ui.auth.ui.email.EmailActivity
I/FIAM.Headless: Setting display event component
I/FIAM.Display: Unbinding from activity: com.firebase.ui.auth.ui.email.EmailActivity
I/FIAM.Headless: Removing display event component

If I try the same thing on another phone with microG 0.2.14.204215, the app crashes as soon as I press the email button.

No com.firebase.ui.auth.ui.email.EmailActivity appears in the logs.

I/FIAM.Headless: went foreground
I/FIAM.Display: Binding to activity: Main.RootActivity
I/FIAM.Headless: Setting display event component
I/FIAM.Headless: Forcing fetch from service rather than cache. Test Device: false | App Fresh Install: true
I/FA: Tag Manager is not found and thus will not be used
I/FIAM.Headless: Starting InAppMessaging runtime with Installation ID epC9IAAuQc6p9-s1usji2q
I/FIAM.Display: Unbinding from activity: Main.RootActivity
I/FIAM.Headless: Removing display event component
I/FIAM.Headless: Fetching campaigns from service.
W/DynamiteModule: Local module descriptor class for providerinstaller not found.
W/DynamiteModule: IDynamite loader version < 2, falling back to getModuleVersion2
D/GmsDynamiteLoaderImpl: unimplemented Method: getModuleVersion for providerinstaller
I/DynamiteModule: Considering local module providerinstaller:0 and remote module providerinstaller:0
W/ProviderInstaller: Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0.
D/GmsProviderInstaller: Initializing provider for io.yuka.android
V/NativeCrypto: Registering com/google/android/gms/org/conscrypt/NativeCrypto's 288 native methods...
D/GmsProviderInstaller: Installed default security provider GmsCore_OpenSSL
I/FIAM.Display: Binding to activity: com.firebase.ui.auth.KickoffActivity
I/FIAM.Headless: Setting display event component
I/FIAM.Display: Unbinding from activity: com.firebase.ui.auth.KickoffActivity
I/FIAM.Headless: Removing display event component
I/BiChannelGoogleApi: [FirebaseAuth: ] getGoogleApiForMethod() returned Gms: com.google.firebase.auth.api.a.d@75adc3
I/FIAM.Display: Binding to activity: com.firebase.ui.auth.ui.idp.AuthMethodPickerActivity
I/FIAM.Headless: Setting display event component
I/FIAM.Headless: Successfully fetched 0 messages from backend
I/FIAM.Display: Unbinding from activity: com.firebase.ui.auth.ui.idp.AuthMethodPickerActivity
I/FIAM.Headless: Removing display event component
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: io.yuka.android, PID: 22158
    android.content.ActivityNotFoundException: No Activity found to handle null
        at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2067)
        at android.app.Activity.startIntentSenderForResultInner(Activity.java:5583)
        at android.app.Activity.startIntentSenderForResult(Activity.java:5549)
        at androidx.fragment.app.d.startIntentSenderForResult(FragmentActivity.java:6)
        at androidx.core.app.a.x(ActivityCompat.java:2)
        at androidx.fragment.app.d.startIntentSenderFromFragment(FragmentActivity.java:6)
        at androidx.fragment.app.d$a.q(FragmentActivity.java:1)
        at androidx.fragment.app.Fragment.startIntentSenderForResult(Fragment.java:2)
        at com.firebase.ui.auth.util.ui.FlowUtils.startIntentSenderForResult(FlowUtils.java:5)
        at com.firebase.ui.auth.util.ui.FlowUtils.unhandled(FlowUtils.java:12)
        at com.firebase.ui.auth.viewmodel.ResourceObserver.onChanged(ResourceObserver.java:12)
        at com.firebase.ui.auth.viewmodel.ResourceObserver.onChanged(ResourceObserver.java:1)
        at androidx.lifecycle.LiveData.c(LiveData.java:6)
        at androidx.lifecycle.LiveData.d(LiveData.java:5)
        at androidx.lifecycle.LiveData$c.e(LiveData.java:10)
        at androidx.lifecycle.LiveData$LifecycleBoundObserver.c(LiveData.java:3)
        at androidx.lifecycle.k$b.a(LifecycleRegistry.java:3)
        at androidx.lifecycle.k.g(LifecycleRegistry.java:9)
        at androidx.lifecycle.k.q(LifecycleRegistry.java:9)
        at androidx.lifecycle.k.m(LifecycleRegistry.java:5)
        at androidx.lifecycle.k.i(LifecycleRegistry.java:2)
        at androidx.fragment.app.Fragment.performStart(Fragment.java:7)
        at androidx.fragment.app.j.T0(FragmentManagerImpl.java:87)
        at androidx.fragment.app.j.Q0(FragmentManagerImpl.java:9)
        at androidx.fragment.app.j.R0(FragmentManagerImpl.java:7)
        at androidx.fragment.app.j.g0(FragmentManagerImpl.java:2)
        at androidx.fragment.app.j.f0(FragmentManagerImpl.java:3)
        at androidx.fragment.app.f.q(FragmentController.java:1)
        at androidx.fragment.app.d.onStart(FragmentActivity.java:9)
        at androidx.appcompat.app.d.onStart(AppCompatActivity.java:1)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1435)
        at android.app.Activity.performStart(Activity.java:8024)
        at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3475)
        at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
        at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7657)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:594)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
E/UncaughtException: android.content.ActivityNotFoundException: No Activity found to handle null
        at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2067)
        at android.app.Activity.startIntentSenderForResultInner(Activity.java:5583)
        at android.app.Activity.startIntentSenderForResult(Activity.java:5549)
        at androidx.fragment.app.d.startIntentSenderForResult(FragmentActivity.java:6)
        at androidx.core.app.a.x(ActivityCompat.java:2)
        at androidx.fragment.app.d.startIntentSenderFromFragment(FragmentActivity.java:6)
        at androidx.fragment.app.d$a.q(FragmentActivity.java:1)
        at androidx.fragment.app.Fragment.startIntentSenderForResult(Fragment.java:2)
        at com.firebase.ui.auth.util.ui.FlowUtils.startIntentSenderForResult(FlowUtils.java:5)
        at com.firebase.ui.auth.util.ui.FlowUtils.unhandled(FlowUtils.java:12)
        at com.firebase.ui.auth.viewmodel.ResourceObserver.onChanged(ResourceObserver.java:12)
        at com.firebase.ui.auth.viewmodel.ResourceObserver.onChanged(ResourceObserver.java:1)
        at androidx.lifecycle.LiveData.c(LiveData.java:6)
        at androidx.lifecycle.LiveData.d(LiveData.java:5)
        at androidx.lifecycle.LiveData$c.e(LiveData.java:10)
        at androidx.lifecycle.LiveData$LifecycleBoundObserver.c(LiveData.java:3)
        at androidx.lifecycle.k$b.a(LifecycleRegistry.java:3)
        at androidx.lifecycle.k.g(LifecycleRegistry.java:9)
        at androidx.lifecycle.k.q(LifecycleRegistry.java:9)
        at androidx.lifecycle.k.m(LifecycleRegistry.java:5)
        at androidx.lifecycle.k.i(LifecycleRegistry.java:2)
        at androidx.fragment.app.Fragment.performStart(Fragment.java:7)
        at androidx.fragment.app.j.T0(FragmentManagerImpl.java:87)
        at androidx.fragment.app.j.Q0(FragmentManagerImpl.java:9)
        at androidx.fragment.app.j.R0(FragmentManagerImpl.java:7)
        at androidx.fragment.app.j.g0(FragmentManagerImpl.java:2)
        at androidx.fragment.app.j.f0(FragmentManagerImpl.java:3)
        at androidx.fragment.app.f.q(FragmentController.java:1)
        at androidx.fragment.app.d.onStart(FragmentActivity.java:9)
        at androidx.appcompat.app.d.onStart(AppCompatActivity.java:1)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1435)
        at android.app.Activity.performStart(Activity.java:8024)
        at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3475)
        at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
        at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7657)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:594)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

I've cleaned the logs taking out the lines that I supposed were not relevant. If you need the full logs or if you want me to try something else, I'll be glad to help.

Same problem with Yuka

ale5000-git commented 3 years ago

Has anyone retried with 0.2.15.204713?

Romern commented 3 years ago

FirebaseUI Auth is still not implemented, which is why Yuka and other apps crash when using it. I added the info to the wiki

dri94 commented 3 years ago

I still experience this with firebase email password login in MicroG0.2.17.204714... I own the app it doesn't work in so if any logs are checks are needed lmk

com.google.firebase.auth.api.internal.zzeg could not execute call because it requires feature (firebase_auth_aidl_migration, 1).
[4203] BasicNetwork.performRequest: Unexpected response code 403 for https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key
{
  "error": {
    "code": 403,
    "message": "Requests from this Android client application \u003cempty\u003e are blocked.",
    "errors": [
      {
        "message": "Requests from this Android client application \u003cempty\u003e are blocked.",
        "domain": "global",
        "reason": "forbidden"
      }
    ],
    "status": "PERMISSION_DENIED"
  }
}
Romern commented 3 years ago

@dri94 The way MicroG works, is that it uses the Firebase Web-API, so your API key needs to allow for websites to use it. Of course this could potentially be a security concern for certain apps, but if not you can select your API Key in the Google Cloud Console under APIs and Services and remove the "Application restrictions".

dri94 commented 3 years ago

@dri94 The way MicroG works, is that it uses the Firebase Web-API, so your API key needs to allow for websites to use it. Of course this could potentially be a security concern for certain apps, but if not you can select your API Key in the Google Cloud Console under APIs and Services and remove the "Application restrictions".

This was in fact the issue. Thanks. Since I own the app I can just enable web services when I need it and restrict the key otherwise

mar-v-in commented 3 years ago

I fixed the issue with Yuka and probably other apps via https://github.com/microg/GmsCore/commit/161c2ffa24725219737d5be9e5b91d279f38c1ed

syntech16 commented 3 years ago

@mar-v-in Great news! I'll try it with a couple of apps I know, whenever there's a version with these changes, and I'll keep you updated.

infinity0 commented 3 years ago

Any chance we can get a new release with this commit? I have the same problem with Tandem and would be happy to test it out and report back.

infinity0 commented 3 years ago

v0.2.19.211515 fixes this for me, thanks a lot!

Bluexin commented 2 years ago

Would support for service Intent { act=com.google.android.gms.auth.api.signin.service.START pkg=com.google.android.gms } fall under this issue ? As required for #1524, #1199, #990, #756, #600, #497, #410, and probably many others. Is this intent the one that requires that X-Goog-Spatula header ?

Instead of using the Spatula header in PhoneAuth, recaptcha (recaptchaToken) can be used instead ( firebase.google.com/docs/auth/web/phone-auth )

From what I can see in c3bfb63f that's how that part was implemented.

Anything we can do to help with this ?

ale5000-git commented 2 years ago

Most problems with Firebase auth are already fixed, if needed please open a new ticket.