Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Targeting Firebase Auth #1198

Closed
GRBurst opened this issue Sep 28, 2020 · 26 comments
Closed

Targeting Firebase Auth #1198

GRBurst opened this issue Sep 28, 2020 · 26 comments

Comments

@GRBurst
Copy link

GRBurst commented Sep 28, 2020

Hey there,

I use microG for many years now and still love it ❤️

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:

  • Is it possible to get an introduction to the code @mar-v-in @emlove ? Maybe we could schedule a video call and record it for further references. Perhaps there are more devs interested in joining the call?
  • Ideally, we can determine the complexity of the firebase auth issue and define tasks to solve it.

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
Copy link

Romern commented Sep 28, 2020

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
Copy link
Author

GRBurst commented Sep 29, 2020

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
Copy link

Romern commented Sep 29, 2020

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
Copy link
Author

GRBurst commented Sep 29, 2020

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

@Romern
Copy link

Romern commented Sep 30, 2020

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
Copy link
Member

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
Copy link
Author

GRBurst commented Sep 30, 2020

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
Copy link
Author

GRBurst commented Sep 30, 2020

[...] 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
Copy link

Romern commented Sep 30, 2020

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
Copy link
Member

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

  • Anonymous login
  • Email/Password login
  • Phone login
  • Custom-Token login

@Joecowboy
Copy link

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
Copy link

Romern commented Nov 5, 2020

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
Copy link

Romern commented Nov 7, 2020

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
Copy link

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
Copy link

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
Copy link
Member

Has anyone retried with 0.2.15.204713?

@Romern
Copy link

Romern commented Dec 18, 2020

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
Copy link

dri94 commented Feb 20, 2021

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
Copy link

Romern commented Feb 20, 2021

@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
Copy link

dri94 commented Feb 21, 2021

@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
Copy link
Member

I fixed the issue with Yuka and probably other apps via 161c2ff

@syntech16
Copy link

@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
Copy link

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
Copy link

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

@Bluexin
Copy link

Bluexin commented Dec 6, 2021

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 c3bfb63 that's how that part was implemented.

Anything we can do to help with this ?

@ale5000-git
Copy link
Member

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

10 participants