Apps that sign in with the One Tap API can't get past the Google button under MicroG-RE. The call they make is:
Identity.getSignInClient(context)
.getSignInIntent(GetSignInIntentRequest.builder().setServerClientId("<web client id>").build())
That binds the service auth.api.identity.service.signin.START, which MicroG-RE doesn't have, so the request fails and no account picker opens.
Tested on MicroG-RE 6.1.4 (latest), with a re-signed app whose only login option is Google. The GmsCore redirect and signature spoof are fine (no error 9). it reaches MicroG-RE and then dies at the bind.
Logcat when tapping sign-in:
W ServiceBindIntentUtils: Dynamic lookup for intent failed for action: app.revanced.android.gms.auth.api.identity.service.signin.START
W ActivityManager: Unable to start service Intent { act=...auth.api.identity.service.signin.START ... pkg=app.revanced.android.gms } not found
W GmsClient: unable to connect to service: ...auth.api.identity.service.signin.START on app.revanced.android.gms
Services MicroG-RE declares (dumpsys package app.revanced.android.gms):
auth.api.signin.service.START -- present (legacy GoogleSignIn)
credential.manager.service.firstparty.START -- present (Credential Manager)
auth.api.credentials.PICKER -- present
auth.api.identity.service.signin.START -- missing
What would fix it is the SignInClient surface, mainly these two methods:
- getSignInIntent(GetSignInIntentRequest) returns a PendingIntent that launches the picker
- getSignInCredentialFromIntent(Intent) returns a SignInCredential with the id token for the request's serverClientId
It looks like this could reuse the existing org.microg.gms.auth.signin flow, since that already produces an id token for a web client id. More apps are switching to this API from the old GoogleSignIn one. Happy to test builds.
Acknowledgements
Apps that sign in with the One Tap API can't get past the Google button under MicroG-RE. The call they make is:
That binds the service auth.api.identity.service.signin.START, which MicroG-RE doesn't have, so the request fails and no account picker opens.
Tested on MicroG-RE 6.1.4 (latest), with a re-signed app whose only login option is Google. The GmsCore redirect and signature spoof are fine (no error 9). it reaches MicroG-RE and then dies at the bind.
Logcat when tapping sign-in:
Services MicroG-RE declares (dumpsys package app.revanced.android.gms):
auth.api.signin.service.START -- present (legacy GoogleSignIn)
credential.manager.service.firstparty.START -- present (Credential Manager)
auth.api.credentials.PICKER -- present
auth.api.identity.service.signin.START -- missing
What would fix it is the SignInClient surface, mainly these two methods:
It looks like this could reuse the existing org.microg.gms.auth.signin flow, since that already produces an id token for a web client id. More apps are switching to this API from the old GoogleSignIn one. Happy to test builds.
Acknowledgements