DigiD(nl.rijksoverheid.digi.pub): can't scan QR code anymore due to missing GMS module
- /e/ version: 1.7-s
- Device model(s): Fairphone 4
- Developer mode enabled: yes
- Device rooted: no
- Trackers blocker enabled: yes
Summary
The Dutch government has an app called digid that is used to login and access accounts for various institutions. It's used for health insurance, manage taxes, manage study loans, manage hospital stuff. Basically any organization where the Dutch government is involved uses this platform to verify the user's identity.
The problem
The usual login flow is as follows:
- The user visits a website where DigiD is required.
- The user opens the DigiD app on their phone and generates a code in the app.
- The user enters the generated code into the website of the institution they want to access.
- The user is now shown a QR code that they have to scan with their phone.
- When scanning the QR code with the DigiD app, nothing happens, and the user is not logged in.
Steps to reproduce
- Visit a website requiring DigiD login
- Open the DigiD app and enter the DigiD code
- Try to scan the QR code.
What is the current behavior? The user scans the QR code, but isn't logged in. The app doesn't respond, and the website doesn't do anything either.
What is the expected correct behavior?
When scanning the QR code, the user should get a pop-up that asks the user to allow the login attempt. The user should click on 'Allow' and the website will show that the user has authorized the login and will be redirected to the institution's page.
Technical information
Relevant logs (adb logcat
)
02-07 20:59:55.309 13960 14331 E OptionalModuleUtils: Failed to complete the task of features availability check
02-07 20:59:55.309 13960 14331 E OptionalModuleUtils: java.util.concurrent.ExecutionException: com.google.android.gms.common.api.ApiException: 17: API: ModuleInstall.API is not available on this device. Connection failed with: ConnectionResult{statusCode=CANCELED, resolution=null, message=null}
02-07 20:59:55.309 13960 14331 E OptionalModuleUtils: at com.google.android.gms.tasks.Tasks.zza(com.google.android.gms:play-services-tasks@@18.0.2:5)
02-07 20:59:55.309 13960 14331 E OptionalModuleUtils: at com.google.android.gms.tasks.Tasks.await(com.google.android.gms:play-services-tasks@@18.0.2:8)
02-07 20:59:55.309 13960 14331 E OptionalModuleUtils: at com.google.mlkit.common.sdkinternal.OptionalModuleUtils.areAllRequiredModulesAvailable(com.google.mlkit:common@@18.5.0:9)
02-07 20:59:55.309 13960 14331 E OptionalModuleUtils: at com.google.mlkit.common.sdkinternal.OptionalModuleUtils.areAllRequiredModulesAvailable(com.google.mlkit:common@@18.5.0:3)
02-07 20:59:55.309 13960 14331 E OptionalModuleUtils: at com.google.mlkit.vision.barcode.internal.zzl.zzc(com.google.android.gms:play-services-mlkit-barcode-scanning@@18.1.0:6)
02-07 20:59:55.309 13960 14331 E OptionalModuleUtils: at com.google.mlkit.vision.barcode.internal.zzi.load(com.google.android.gms:play-services-mlkit-barcode-scanning@@18.1.0:1)
02-07 20:59:55.309 13960 14331 E OptionalModuleUtils: at com.google.mlkit.common.sdkinternal.ModelResource.zza(com.google.mlkit:common@@18.5.0:4)
02-07 20:59:55.309 13960 14331 E OptionalModuleUtils: at com.google.mlkit.common.sdkinternal.zzn.run(Unknown Source:10)
02-07 20:59:55.309 13960 14331 E OptionalModuleUtils: at com.google.mlkit.common.sdkinternal.zzt.run(com.google.mlkit:common@@18.5.0:2)
02-07 20:59:55.309 13960 14331 E OptionalModuleUtils: at com.google.mlkit.common.sdkinternal.MlKitThreadPool.zze(com.google.mlkit:common@@18.5.0:4)
02-07 20:59:55.309 13960 14331 E OptionalModuleUtils: at com.google.mlkit.common.sdkinternal.MlKitThreadPool.zzc(com.google.mlkit:common@@18.5.0:1)
02-07 20:59:55.309 13960 14331 E OptionalModuleUtils: at com.google.mlkit.common.sdkinternal.zzk.run(Unknown Source:2)
02-07 20:59:55.309 13960 14331 E OptionalModuleUtils: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
02-07 20:59:55.309 13960 14331 E OptionalModuleUtils: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
02-07 20:59:55.309 13960 14331 E OptionalModuleUtils: at com.google.mlkit.common.sdkinternal.MlKitThreadPool.zzd(com.google.mlkit:common@@18.5.0:2)
02-07 20:59:55.309 13960 14331 E OptionalModuleUtils: at com.google.mlkit.common.sdkinternal.zzi.run(Unknown Source:2)
02-07 20:59:55.309 13960 14331 E OptionalModuleUtils: at java.lang.Thread.run(Thread.java:920)
Solutions
Workaround
The user can log in with their username and password instead, and they will be sent an SMS containing a code they need to enter. This, however, is unsafer than the usual login method, as SMS messages can easily be intercepted and are not encrypted
Possible fixes
Add the ModuleInstall.API to MicroG, because I think DigiD uses that but can't find it, which results in the error.